2012-03-21 110 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

相关问题