====== bash ======
Bash (**B**ourne-**a**gain **Sh**ell) - [[playground:glossary:posix|POSIX]]-совместимая командная оболочка. Bash работает в одном из двух режимов:
- login shell (оболочка входа) - если bash был вызван в TTY при помощи login, ssh и тп.
- interactive shell (интерактивная оболочка) - если был вызван терминалом или запущен непосредственно bash, без параметров и скриптов.
===== Конфиги =====
login shell:
- ''/etc/profile'' - Cистемный, исполняется первым.
- ''~/.bash_profile'' - Пользовательский, исполняется после ''/etc/profile''. Если не существует, проверяются ''~/.bash_login'' и ''~/.profile'' (в указанном порядке). Файл-образец ''/etc/skel/.bash_profile'' содержит также указание на исполнение файла ''~/.bashrc''.
- ''~/.bash_logout'' - Пользовательский, исполняется после выхода из оболочки входа.
- ''/etc/bash.bash_logout'' - Системный, исполняется после выхода из оболочки входа. Зависит от флага компиляции ''-DSYS_BASH_LOGOUT="/etc/bash.bash_logout"''.
interactive shell:
- ''/etc/bash.bashrc'' - Системный, исполняет файл ''/usr/share/bash-completion/bash_completion''. Зависит от флага компиляции ''-DSYS_BASHRC="/etc/bash.bashrc"''.
- ''~/.bashrc'' - Пользовательский, исполняется после ''/etc/bash.bashrc''.
===== Переменные окружения =====
Интерактивные оболочки наследуют окружение от родительского процесса (которым может быть в том числе и оболочка входа).
Для создания переменной окружения необходимо экспортировать переменную оболочки:
VARIABLE=content
export VARIABLE
# или более кратко:
export VARIABLE=content
Переменные окружения лучше((чтобы другие совместимые оболочки могли их использовать.)) перечислять в файлах ''~/.profile'' или ''/etc/profile''.
Так же для работы с переменными окружения в пакете [[soft:coreutils:ns_index|coreutils]] есть программы ''printenv'' и ''env''.
''printenv'' - выводит все переменные окружения оболочки и их значения.
''env'' может быть использована для запуска команд с переменной окружения при единичном вызове программы, не затрагивая переменные окружения командной оболочки:
env EDITOR=vim xterm
===== Встроенный команды =====
{{fixme}}