1

В Terminal.app « Оболочки» открываются с настройками с помощью стандартной оболочки входа в систему (/usr/bin/login) и « Command» (полный путь) (который по умолчанию содержит /usr/bin/bash в качестве пути).

По умолчанию я выбрал опцию « Оболочка входа по умолчанию» (/usr/bin/login).

В чем разница между /usr/bin/login и /usr/bin/bash? Какой из них следует выбрать в качестве оболочки по умолчанию?

5 ответов5

4

Практическое отличие состоит в том, что получающаяся среда оболочки считывает свои начальные параметры конфигурации.

/usr/bin/login разветвляется из оболочки входа. Я думаю, что это вызывает процесс аутентификации, но вы можете не увидеть никаких видимых взаимодействий аутентификации, если вы уже вошли в систему. И, конечно, если ваша оболочка входа не bash, она будет вызываться вместо bash.

bash - это оболочка, которая знает, была ли она вызвана как оболочка входа или нет. Оболочка для входа в bash читает .bash_profile или .bash_login или .profile - только один, в таком порядке предпочтения. Оболочка без регистрации не будет читать .profile, но будет читать из .bashrc. Это нормальное поведение bash на современных * nix платформах, но оно может привести к трудностям при обнаружении странного поведения, если вы не понимаете, что происходит.

Например, вы можете открыть оболочку "login" через Terminal и получить один набор переменных среды (скажем, из вашего .profile), затем набрать "bash" и получить совершенно другой набор переменных (из .bashrc, плюс любые переменные, которые были экспортированы, за исключением тех, которые не были). В частности, PATH может быть искажен повторяющимися или отсутствующими записями.

3

/usr/bin/login не является оболочкой; это программа, используемая для входа в систему. Он управляет процессом входа в систему. Как пользователь правильно настроенной системы, вам никогда не придется беспокоиться о /usr/bin/login. Если вам все равно интересно, прочитайте

man login

Оболочка запускается после завершения процесса входа в систему. Он предоставляет пользователю текстовый интерфейс командной строки к средствам операционной системы, включая запуск других программ. /usr /bin /bash - хороший выбор для оболочки по умолчанию. Вы можете прочитать больше о bash, выполнив

man bash

Обе эти команды man могут быть выполнены в командной строке.

1

Это две совершенно разные вещи, и единственная общность заключается в том, что оба обычно запускаются в начале входа пользователя в систему и оба запускают файл конфигурации (.login и .bashrc), которые по сути являются сценариями оболочки. Кроме того, bash, как и многие современные оболочки, также позволяет переключаться между пользователями, что является одной из основных целей login в систему.

В деталях:

login - это программа, используемая для входа в систему пользователя, в конце которой запускается оболочка (или интерпретатор командной строки).

вход в систему знает только то, как сделать одно - войти в систему пользователя (проверить подлинность, используя имя пользователя / пароль, установить некоторые переменные среды, такие как TERM и PATH, и выполнить пару задач администратора при входе в систему - подробности см. по ссылке).

Оболочка Unix (примером которой является bash ) является интерпретатором командной строки в сочетании с интерпретатором сценариев, и ее функция состоит в том, чтобы принимать ввод (от пользователя или предоставленный программно) и выполнять запрошенные команды.

Насколько я знаю, логин вообще не может использоваться как оболочка, так как он не имеет функций интерпретатора командной строки.

0
% man login

 login  is  used  when  signing  onto  a system.  It can also be used to
   switch from one user to another at any time (most  modern  shells  have
   support for this feature built into them, however).


% man bash

  Bash  is  an  sh-compatible  command language interpreter that executes
   commands read from the standard input or from a file.

так что, если вам нужно выбрать одну оболочку из двух предложенных вами вариантов, это явно bash.

-1

/ USR / бен / Баш

Это встроенное ядро Linux в Mac OS. Тогда я думаю, что это почти то же самое, когда вы получаете команду в Linux. Оболочка по умолчанию должна быть bash.

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