hnwの日記

ログインシェルが気に食わなかった場合の対処

自分がroot権限を持っていないサーバで、ログインシェルが気に食わないことが稀にあるかと思います。自分は**sh使いなのにデフォルトは**shかよ、みたいな。そんなときのために。


これは有名なネタの部類だと思うんですが、案外不便に耐えて使っている人が多い気がします。僕の使っているものは下記のようなものです。

# .profile
#
# ログインシェルがshだった場合に好きなシェルを起動する。
# ログインシェルがbashの場合にも利用可能。
# (ただし.bash_profileや.bash_loginがある場合は読まれない)
# chshできるならした方が良いが、chshできない環境で重宝する。

#If not running interactively, dont't do anything
[ -z "$PS1" ] && return

FAVORIT_SHELL=/bin/bash
FAVORIT_SHELL_OPT=--login
if [ -e $FAVORIT_SHELL -a "$SHELL" != "$FAVORIT_SHELL" ] ; then
  exec $FAVORIT_SHELL $FAVORIT_SHELL_OPT
fi
# .login
#
# ログインシェルがcsh/tcshだった場合に好きなシェルを起動する。
# chshできるならした方が良いが、chshできない環境で重宝する。
set favorit_shell=/bin/bash
set favorit_shell_opt=--login
if ( -f "$favorit_shell" && "$shell" != "$favorit_shell" ) then
  exec $favorit_shell $favorit_shell_opt
endif