2012-03-21 8 views
1

$ 0と$ SHELLの正確な違いを知りたいと思います。私はこれら2つがシェル情報を知るために使われていることを知っています。 例を説明する人がいれば素晴らしいことでしょう。

両方が次のように異なる値を示している場合はどうなりますか?

# echo $0 
ksh 
# echo $SHELL 
/sbin/sh 
# 
+0

シェル変数(その他のすべてについて)は、UNIXでは大文字と小文字が区別されることに注意してください。 – dmckee

答えて

2

SHELLは単なる環境変数ですが、$ 0は現在実行中のプログラムのパスです。 SHELLはデフォルトの値に設定されていますが、ログイン時に取得するシェルのパスに設定する必要はありません。新しいシェルを呼び出すと変更されません。例:

$ echo $0 $SHELL 
bash /bin/bash 
$ exec csh 
% echo $0 $SHELL 
csh /bin/bash 
+0

それはある意味があります。お返事をありがとうございます。 –

4

$ SHELLはあなたデフォルトシェルへの完全なパスを提供します。

$ 0は現在のの名前です。シェルです。

+0

ご返信ありがとうございます。しかし、これら2つの変数がどのように2つの異なるシェルを指しているのでしょうか。つまり、$ 0はそれがBourneシェルであることを示していますが、$ SHELLはそれがkornシェルであると言って矛盾していますか?ここに光を投げていただけますか? –

+0

@Vinod:どうやってkshを実行していますか?あなたのログインシェルですか? – geoffspear

+0

ログインシェルはshで、コマンドを実行しているシェルはkshです。グラフィカルな環境で走っているようで、そこからkshプロンプトを開いたようですね。 – ONOZ

関連する問題