$ 0と$ SHELLの正確な違いを知りたいと思います。私はこれら2つがシェル情報を知るために使われていることを知っています。 例を説明する人がいれば素晴らしいことでしょう。
両方が次のように異なる値を示している場合はどうなりますか?
# echo $0
ksh
# echo $SHELL
/sbin/sh
#
$ 0と$ SHELLの正確な違いを知りたいと思います。私はこれら2つがシェル情報を知るために使われていることを知っています。 例を説明する人がいれば素晴らしいことでしょう。
両方が次のように異なる値を示している場合はどうなりますか?
# echo $0
ksh
# echo $SHELL
/sbin/sh
#
SHELLは単なる環境変数ですが、$ 0は現在実行中のプログラムのパスです。 SHELLはデフォルトの値に設定されていますが、ログイン時に取得するシェルのパスに設定する必要はありません。新しいシェルを呼び出すと変更されません。例:
$ echo $0 $SHELL
bash /bin/bash
$ exec csh
% echo $0 $SHELL
csh /bin/bash
それはある意味があります。お返事をありがとうございます。 –
$ SHELLはあなたデフォルトシェルへの完全なパスを提供します。
$ 0は現在のの名前です。シェルです。
ご返信ありがとうございます。しかし、これら2つの変数がどのように2つの異なるシェルを指しているのでしょうか。つまり、$ 0はそれがBourneシェルであることを示していますが、$ SHELLはそれがkornシェルであると言って矛盾していますか?ここに光を投げていただけますか? –
@Vinod:どうやってkshを実行していますか?あなたのログインシェルですか? – geoffspear
ログインシェルはshで、コマンドを実行しているシェルはkshです。グラフィカルな環境で走っているようで、そこからkshプロンプトを開いたようですね。 – ONOZ
シェル変数(その他のすべてについて)は、UNIXでは大文字と小文字が区別されることに注意してください。 – dmckee