chsh で zsh をデフォルトシェルに変更しようとしたが変更されないとき。


tmux 利用時に chsh してshellを変更しようとした場合、すぐに反映されなかったので調べた。

結論から言うと、chshする前の tmux のプロセスが生きていたため、このプロセスがshell を握っていたと思われる。
tmux のプロセスを全部kill して解決した。

% tmux
% echo $SHELL
/bin/bash

%  cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/zsh # 追加

% chsh -s /usr/local/bin/zsh #本来ならここで変更される
% echo $SHELL
/bin/bash # 変更されてない

% pkill tmux
% echo $SHELL
/usr/local/bin/zsh #変更された