2

Многие люди говорили мне, что я не должен делать каждую оболочку, я использую оболочку входа в систему. Разогрев через TTY или приложение терминала Xorg, на котором запущен bash ... Кто-нибудь может объяснить потенциальную причину этой логики или разоблачить ее для меня? Спасибо

1 ответ1

2

Первая причина, которая приходит на ум, состоит в том, что вы должны, в общем, следовать принятым практикам. То, как вызывается оболочка, определяет файлы конфигурации, которые она читает. От 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, чтобы сделать это самостоятельно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .