====== 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}}