echo $SHELLを実行すると 出力には/bin/tcshと表示されます これは、tcshを実行していることを意味します シェル。
しかし、たとえば、次のコマンドを発行した場合
alias emacs 'emacs -nw'
次のエラーが発生します:
bash: alias: emacs: not found
bash: alias: emacs -nw: not found
alias emacs="emacs -nw"を発行すると 正常に動作します!
tcshを実行しているので、これは混乱を招きます ただし、コマンドはbashによって解釈されます 。
理由は何でしょうか?
承認された回答:
$SHELL 必ずしも現在のシェルである必要はなく、デフォルトのログインシェルです。使用しているシェルを確認するには、
ps $$
これは、psを使用する最新のUnix/Linuxで機能するはずです。 BSD構文をサポートします。それ以外の場合、これはポータブル(POSIX)の方法です
ps -p $$
tcshを実行している場合は、次のようになります。 :
8773 pts/10 00:00:00 tcsh
tcshが必要な場合 デフォルトのシェルにして、chshを使用します 設定します。