我想知道$ 0和$ SHELL之间的确切区别。我知道这两个是用来了解shell的信息。 如果有人用例子解释,那将会很棒。
这表明两者是否显示如下不同的值?
# echo $0
ksh
# echo $SHELL
/sbin/sh
#
我想知道$ 0和$ SHELL之间的确切区别。我知道这两个是用来了解shell的信息。 如果有人用例子解释,那将会很棒。
这表明两者是否显示如下不同的值?
# echo $0
ksh
# echo $SHELL
/sbin/sh
#
SHELL只是一个环境变量,而$ 0是当前正在运行的程序的路径。 SHELL设置为默认值,但不一定设置为登录时获得的shell的路径。如果你调用一个新的shell,它不会改变。例如:
$ echo $0 $SHELL
bash /bin/bash
$ exec csh
% echo $0 $SHELL
csh /bin/bash
它有一定的意义。感谢您的回复。 – 2012-03-21 13:29:58
$ SHELL给出了完整路径默认壳。
$ 0给出您的当前壳的名称。
感谢您的快速回复。但是,这两个变量是如何指向两个不同的壳。也就是说,$ 0表明它是一个Bourne shell,而$ SHELL是说它是一个korn shell?你可以在这里扔点灯吗? – 2012-03-21 12:35:31
@Vinod:你如何运行ksh?它是你的登录shell吗? – geoffspear 2012-03-21 12:41:04
您的登录shell是sh,并且您正在执行命令的shell是ksh。看起来你正在运行一个图形环境并从那里打开一个ksh提示符,对吗? – ONOZ 2012-03-21 12:50:57
请注意,shell变量(以及其他所有内容)在unix中区分大小写。 – dmckee 2012-03-21 22:00:29