Многие люди говорили мне, что я не должен делать каждую оболочку, я использую оболочку входа в систему. Разогрев через TTY или приложение терминала Xorg, на котором запущен bash ... Кто-нибудь может объяснить потенциальную причину этой логики или разоблачить ее для меня? Спасибо
1 ответ
Первая причина, которая приходит на ум, состоит в том, что вы должны, в общем, следовать принятым практикам. То, как вызывается оболочка, определяет файлы конфигурации, которые она читает. От man bash
:
When bash is invoked as an interactive login shell,
or as a non-interactive shell with the --login
option, it first reads and executes commands from the
file /etc/profile, if that file exists. After read‐
ing that file, it looks for ~/.bash_profile,
~/.bash_login, and ~/.profile, in that order, and
reads and executes commands from the first one that
exists and is readable. The --noprofile option may
be used when the shell is started to inhibit this
behavior.
When a login shell exits, bash reads and executes
commands from the file ~/.bash_logout, if it exists.
а также
When an interactive shell that is not a login shell
is started, bash reads and executes commands from
/etc/bash.bashrc and ~/.bashrc, if these files exist.
This may be inhibited by using the --norc option.
The --rcfile file option will force bash to read and
execute commands from file instead of
/etc/bash.bashrc and ~/.bashrc.
Большинство дистрибутивов будут размещать глобальные псевдонимы, переменные и параметры оболочки в /etc/bash.bashrc
потому что они настроены на то, чтобы сделать большинство оболочек (терминалов и т.д.) Интерактивными, не входящими в систему . Поэтому, если вы переключитесь на использование логинов , вы потеряете все эти настройки. Это может привести к проблемам в нисходящем направлении, если, например, некоторые глобальные переменные не были установлены правильно и т.д.
Кроме того, настройка по умолчанию - запускать оболочку входа в систему при входе в систему и не входить в нее после нее. Это упрощает настройку переменных среды или простых заданий, которые должны выполняться один раз в установочных файлах оболочки входа (например, ~/.profile
). Преимущество заключается в том, что они будут выполняться только один раз при входе в систему. Если вы создадите все свои оболочки для входа в систему, то эти команды будут выполняться несколько раз, что является i) не элегантным и ii) может замедлить работу вашей системы, если эти команды являются ресурсоемкими.
Наконец, часто требуется настроить различные среды, если пользователь входит в систему, например, через ssh, и если он физически присутствует и открывает терминал. Делая все свои входные оболочки, вы теряете способность различать.
Теперь, это не может быть так плохо, как все это, так как, если я правильно понимаю, терминальное приложение OSX запускает оболочки входа по умолчанию. Тем не менее, OSX был спроектирован таким образом, поэтому о потенциальных проблемах, о которых я говорил, предположительно, позаботились. Это не будет иметь место, если вы измените настройки Linux, чтобы сделать это самостоятельно.