質問: **・行いたいこと** を参考にしてvagrant上のCentOS7にzshをインストールしました。そしてzshのパス(/usr/local/bin/zsh)を直接実行できるのを確認しました。 デフォルトの起動シェルをbashからzshに切り替えたいです。 **・問題点** 起動シェルを変更するために、 ``` # echo /usr/local/bin/zsh >> /etc/shells # chsh -s /usr/local/bin/zsh ``` を実行したのですが、その後`exec $SHELL -l`を実行してもzshが起動せず、bashが起動します。 `echo $SHELL`の結果は`/bin/bash`のままでした。 正常に起動シェルを切り替えられる方法を教えていただきたいです。 **追記** exitで一度抜けてからもう一度`vagrant ssh`をして再ログインすることで解決しました。 ご回答くださりありがとうございました。
回答: あるプロセスから別のプロセスの環境変数 (`$SHELL` など) を書き換えることはできません(絶対に不可能ではありませんが通常は不可能)。よってファイルを書き換えたり `chsh`(1) などのコマンドを実行しても既存のログインシェルプロセスの `$SHELL` はそのままです。ログアウトせずに対話シェルを切り替えたいなら `export SHELL=/usr/local/bin/zsh` してから `exec $SHELL -l` するか、`exec env SHELL=/usr/local/bin/zsh /usr/local/bin/zsh -l` などと実行しましょう。