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