シェルの初期設定ファイルでの別のシェルの起動

ログインシェルが /bin/csh でシェルの初期設定ファイル中で他のシェルに切り替えるということをしていた。
その際に、単に.cshrc に以下のように記述した結果問題が発生した*1

# .cshrc
exec other_shell

このように設定するとこの設定のしてあるホストへの scp 等ができなくなった。
原因は ssh で以下のようにリモートのコマンドを起動した場合にシェルの初期設定ファイルの時点で exec されてしまうため、command が実行されないことであった。

ssh remote_host command

そのため、インタラクティブシェルかどうかをみてから exec するようにした*2

 #.cshrc
 if ($?prompt) then
     exec other_shell
 endif

*1:実際にはシェルが存在するかどうかを確認している

*2: exec するシェルに起動引数を渡せば良い可能性はあるが、試していない。