Профили Bash: /etc/profile, /etc/bashrc и ~/.bashrc¶
Администратор должен различать настройки всей системы и настройки пользователя, иначе изменения в оболочке могут повлиять на скрипты, SSH-сессии и работу системных заданий.
Какие оболочки бывают¶
| Сценарий | Что это означает | Как проверить |
|---|---|---|
| Интерактивная login-оболочка | пользователь вошёл в сессию | shopt -q login_shell |
| Интерактивная non-login | Bash запущен из другой оболочки | echo "$-" содержит i |
| Неинтерактивный сценарий | запуск bash script.sh |
не рассчитывать на алиасы/profile |
sh -c '...' |
интерпретатор /usr/bin/sh |
в НАЙС.ОС ссылку задаёт пакет Bash, но режим POSIX может отличаться |
В изученном bash.spec /usr/bin/sh символически связывается с Bash. Это не делает любой /bin/sh-скрипт полноценным Bash-сценарием: при вызове как sh оболочка может менять поведение. Для специфичных возможностей Bash используйте #!/usr/bin/env bash.
Изменяем пользовательские настройки, не трогая RPM-файлы¶
Для одного пользователя:
Например:
Проверить синтаксис:
Затем откройте новую интерактивную сессию. Для тестового перечитывания уже действующего файла можно выполнить source ~/.bashrc, но это исполнит весь код файла в текущей оболочке, поэтому сначала прочитайте и проверьте его содержимое.
Конфигурация PATH¶
В изученном /etc/profile НАЙС.ОС исходный PATH начинается с /usr/bin. Для root добавляется /usr/sbin; /bin и /sbin включаются только если соответствующие каталоги не символические ссылки. Обратите внимание: переменные рабочего окружения, полученные до чтения /etc/profile, могут быть перезаписаны логикой профиля.
Если нужно добавить собственный каталог пользователя, делайте это аккуратно:
Включение каталогов, доступных на запись посторонним пользователям, в начало PATH повышает риск запуска подменённых программ.
История Bash¶
Исследованный SPEC задаёт HISTSIZE=10000, HISTFILESIZE=50000, формат временных меток и синхронизацию истории между интерактивными сессиями через PROMPT_COMMAND. Это удобно для работы, но история не является защищённым журналом аудита: её может изменить пользователь, а некоторые команды из неё исключаются. Секреты не вводите в командной строке, если они попадут в историю или список процессов.
Чего не делать¶
- Не модифицируйте
/etc/profileдля единственного пользовательского алиаса. - Не используйте
source ~/.bashrcв произвольном системном скрипте. - Не храните ключи API и пароли в общесистемных профилях.
- Не ожидайте от команды
rmв сценариях подтвержденийrm -i: интерактивные алиасы могут не применяться.