Практическое отличие состоит в том, что получающаяся среда оболочки считывает свои начальные параметры конфигурации.
/ usr / bin / login разветвляется из оболочки входа. Я думаю, что он вызывает процесс аутентификации, но вы можете не увидеть никакого видимого взаимодействия аутентификации, если вы уже вошли в систему. И, конечно, если ваша оболочка входа не bash, то login будет вызывать ее вместо bash.
bash - это оболочка, которая знает, была ли она вызвана как оболочка входа или нет. Оболочка для входа в bash читает .bash_profile или .bash_login или .profile - только один, в таком порядке предпочтения. Оболочка без регистрации не будет читать .profile, но будет читать из .bashrc. Это нормальное поведение bash на современных * nix платформах, но оно может привести к трудностям при обнаружении странного поведения, если вы не понимаете, что происходит.
Например, вы можете открыть оболочку «login» через Terminal и получить один набор переменных среды (скажем, из вашего .profile), затем набрать «bash» и получить совершенно другой набор переменных (из .bashrc, плюс любые переменные, которые были экспортированы, за исключением тех, которые не были). В частности, PATH может быть искажен повторяющимися или отсутствующими записями.