bash
действует по-разному, будь то оболочка или обычный язык программирования (например, perl
или python
).
В соответствии с проектом, настройки ~/.bash_profile
, ~/.bashrc
и т.д., для пользователей , чтобы установить вещи , когда bash
играет роль оболочки (Войти оболочки, interractive оболочки). Подумайте о среде, в которой вы находитесь xterm
(интерактивная оболочка) или ssh
сеансах (оболочка входа в систему) или в консолях (оболочка входа в систему).
С другой стороны, bash
это также мощный язык программирования - подумайте о многих сценариях для управления службами, systemd
- который требует другого стиля работы. Например, когда разработчик пишет системный скрипт или bash
программу, он / она не хочет автоматически получать исходный текст пользователя ~/.bash_profile
. Это нормальная программа, а не оболочка. Обычная программа (включая bash
программы) естественным образом наследует настройки от текущего рабочего средства (оболочки), но не устанавливает их.
Если мы напишем программу для cron
in bash
- это просто произойдет bash
; на самом деле, мы можем записать его в python
или perl
или любой другой progamming Язык- тогда мы можем иметь опцию источники bash
«s ~/.bash_profile
(читай: настройка оболочки пользователя, который как раз случается быть тот же язык вашего языка программирования):
[ -f /home/user/.bash_profile ] && . /home/user/.bash_profile
Однако что, если этот конкретный пользователь не использует в bash
качестве своей оболочки? Он / она может использовать zsh
, ksh
, fish
и т.д. Таким образом, эта практика будет на самом деле не работать при написании программы для общественного пользования.
Таким образом, вы можете найти источник, ~/.bash_profile
если вы думаете, что это сработает. Но здесь речь идет не о том, можем ли мы получить файл, а о том, как все должно работать в системе: концепции дизайна . Вкратце: мы должны рассматривать bash
как нечто, имеющее 2 роли: оболочку и язык программирования . Тогда все будет намного легче понять.
.bashrc
есть строка, которая не позволяет ему работать в неинтерактивных оболочках.