Насколько я знаю, интерактивные оболочки могут быть логином или не логином, а файлы запуска для них разные.
- Если интерактивный + Войти оболочки →
/etc/profile
затем первый читаемый~/.bash_profile
,~/.bash_login
и~/.profile
- Если интерактивная + не авторизованная оболочка →
/etc/bash.bashrc
то~/.bashrc
Я хочу установить некоторые переменные каждый раз, когда использую интерактивную оболочку, независимо от того, является ли она оболочкой входа в систему или нет.
Ответы:
Нет, нет Да, это дефект дизайна.
Используйте следующий контент в
~/.bash_profile
:Остерегайтесь того, что bash имеет еще более странную причуду: когда это неинтерактивная оболочка входа в систему, а родительский процесс -
rshd
илиsshd
, источники bash~/.bashrc
(но не~/.bash_profile
или~/.profile
). Таким образом, вы можете поставить это в верхней части вашего.bashrc
:См. Также Разница между .bashrc и .bash_profile и Разница между Оболочкой входа в систему и Оболочкой без регистрации?
источник
.bashrc
в неинтерактивном режиме на самом деле вполне может считаться неожиданной), а также любая проверка какого-либо чувствительного к безопасности контекста.