2012-03-21 112 views
1

我想知道$ 0和$ SHELL之間的確切區別。我知道這兩個是用來了解shell的信息。 如果有人用例子解釋,那將會很棒。

這表明兩者是否顯示如下不同的值?

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

請注意,shell變量(以及其他所有內容)在unix中區分大小寫。 – dmckee 2012-03-21 22:00:29

回答

2

SHELL只是一個環境變量,而$ 0是當前正在運行的程序的路徑。 SHELL設置爲默認值,但不一定設置爲登錄時獲得的shell的路徑。如果你調用一個新的shell,它不會改變。例如:

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

它有一定的意義。感謝您的回覆。 – 2012-03-21 13:29:58

4

$ SHELL給出了完整路徑默認殼。

$ 0給出您的當前殼的名稱。

+0

感謝您的快速回復。但是,這兩個變量是如何指向兩個不同的殼。也就是說,$ 0表明它是一個Bourne shell,而$ SHELL是說它是一個korn shell?你可以在這裏扔點燈嗎? – 2012-03-21 12:35:31

+0

@Vinod:你如何運行ksh?它是你的登錄shell嗎? – geoffspear 2012-03-21 12:41:04

+0

您的登錄shell是sh,並且您正在執行命令的shell是ksh。看起來你正在運行一個圖形環境並從那裏打開一個ksh提示符,對嗎? – ONOZ 2012-03-21 12:50:57

相關問題