Последний метод не меняет вашу оболочку - он просто указывает старой оболочке запустить новую.
В дополнение к тому, что он почти вдвое медленнее (поскольку вы все равно запускаете bash каждый раз), это может привести к неожиданным взаимодействиям:
В некоторых системах командные команды, такие как ssh myhost "ps -ef"
source ~ / .bashrc, перед запуском команды, но ваша строка "exec zsh" забыла об этом и запускает интерактивную оболочку, несмотря ни на что. Если это произойдет, все пакетное использование SSH (включая SFTP) будет прервано.
В других системах такие пакетные команды не получают ~ / .bashrc (или, часто, они делают, но ~ / .bashrc возвращает рано, если работает в пакетном режиме) - так что ваш "exec zsh" никогда даже не достигается. Так что попытка вашего друга сменить оболочку менее эффективна.
Если вы забудете об этом изменении и попытаетесь отредактировать ~ / .zshrc, чтобы сделать обратное (то есть запустить bash), вы получите бесконечный цикл.