ryg

Bash интерпретатор командного языка

Bash - интерпретатор командного языка UNIX совместимых систем. Выполняет команды из стандартного ввода (например окно терминала) или из файла. В bash также включены полезные расширения оболочек языков Korn и C (команды ksh и csh соответственно)

Синтаксис

bash [options] [file]

Параметры

-c string Если данный параметр присутствует, то команда будет считана из строки string. Если в передаваемой команде есть дополнительные аргументы, они считаются позиционными и начинаются с $0. (Раздел Аргументы)
-i Интерактивная работа интерпретатора
-l Смотреть INVOCATION ниже
-r Ограничения в работе оболочки. Смотреть RESTRICTED SHELL
-s Если указан данный параметр и нет всех необходимых аргументов, то они считываются из стандартного ввода
-D Список всех строк заключенных в двойные кавычки с $ в начале выводятся на стандартный вывод. Необходимо для выполнения перевода. Никакие команды выполняться не будут
[-+]0[shopt_option]

shopt_option - дополнительные параметры оболочки. Читать подраздел SHELL BUILTIN COMMANDS. Если данный параметр присутствует6 тогда -0 перед ним устанавливает указанный параметр, а +0 отменяет его. Если параметр shopt_option не указан, то +0 выводит перечень установленных параметров на стандартный вывод в формате позволяющем повторное использование в качестве входных данных.

-- Сигнализирует об окончании установки параметров. Любые параметры после него рассматриваются как имена файлов и аргументы для скрипта. Параметр "-" эквивалентен "--".

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

--debugger Запускает профайл отладчика перед запуском скрипта. Включает расширенный режим отладки (подробнее в описании extdebug) и запускает функцию трассировки  
(смотреть описание параметра -o).
--dump-po-string Эквивалентно -D, но вывод производится формат файла локализаций .po
--dump-strings Полностью аналогично -D
--help Подсказка
--init-file file  
--rcfile file  Если интерпретатор запускается в интерактивном режиме, то выполняет команды инициализации и указанного файла file, а не из стандартного файла инициализации  ~/.bashrc.
--login Аналогично -l 
--noediting  
--noprofile Не читать при запуске оболочки интерпретатора общесистемные файлы настроек /etc/profile и любые локальные файлы настроек, такие как ~/.bash_profile~/.bash_login или ~/.profile. По умолчанию  bash их использует при запуске в режиме входа (подробнее в параметре INVOCATION). 
--norc Не читать и не исполнять файл персональных настроек ~/.bashrc при интерактивном запуске. По умолчанию данный параметр установлен при запуске оболочки командой sh.
--posix Изменение поведения по умолчанию bash, когда встречается команда отличающаяся от стандарта POSIX (для обеспечения совместимости)
--restricted Действия оболочки ограниченны ( читать ниже о параметре RESTRICTED SHELL)
--verbose Аналогично -v (подробный вывод)
--version Вывести информацию о текущей версии интерпретатора на стандартный вывод

Аргументы

Если после обработки параметров остаются аргументы не связанные с параметрами -с или -s, то первый аргумент считается именем файла содержащий скрипт с командами. В $0 записывается имя файла и остальные аргументы записываются попозиционно. Bash считывает команды скрипта, выполняет их и затем выходит. Статус завершения будет равен статусу завершения последней выполненной команды скрипта. Если не выполнялось ни одной команды, возвращаемое значение будет "0". Сначала производится попытка открыть скрип из текущей папки, в случае если его там нет, буде произведен поиск указанного файла согласно переменной PATH для скриптов.

Вызов bash

login shell - если первый символ после -- 0 или запуск выполнен  с параметром -login.

interactive shell -интерактивная работа. Если запуск произведен без аргументов и без параметра -c со стандартным устройством ввода вывода в виде terminal.app или запуск с параметром -i.

Обработка файлов инициализации. Если какой-либо из файлов с параметрами инициализации существует, но его невозможно прочесть, bash в Mac сообщает об ошибке.

Когда баш запускается в интерактивном режиме или login режиме, в первую очередь считываются и выполняются команды из файла /etc/profile (если он имеется), после этого проверяется наличие файлов ~/.bash_profile, ~/.bash_login, and ~/.profile и если они в наличии и доступны, то команды из них выполняются в том же порядке как они причислены. Чтобы пропустить процесс обработки вышеперечисленных файлом можно использовать параметр --noprofile

Если bash был запущен в режиме login, проверяется и в случае наличия исполняется файл ~/.bash_logout.

В случае запуска в интерактивном режиме, без режима login то во время запуска дополнительно исполняется файл ~/.bashrc. Для отключения данного файла используется параметр --norc или --rcfile file для замены исполняемого файла на другой (file).

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

Когда bash вызывается командой sh, он пытается использовать наиболее старую версию для обеспечения совместимости с POSIX стандартом. Когда вызывается в интерактивном режиме или в режиме --login  в первую очередь считываются и исполняются последовательно файлы  /etc/profile и ~/.profile, для запрета использования этих файлов предназначен параметр --noprofile. Также в интерактивном режиме считывается значение переменной ENV для использования его в качестве пути для поиска исполняемого файла. При запуске командой sh параметр запуска --rcfile игнорируется и не может быть использован. При запуске в стандартном режиме никакие файлы конфигурации не используются, работа интерпретатора идет в POSIX режиме.

Когда bash запущен в режиме  posix с помощью параметра  в командной строке --posix интерпретатор будет придерживаться стандарта POSIX для файлов инициализации. В этом случае интерактивный режим использует значение переменной ENV,  в которой должно быть записано имя файла инициализации, никакие другие файлы инициализации  не будут выполняться. 

 

Синтаксис языка  bash

Весь список команд терминала Mac OS X