$ 0和$ SHELL之间的差异

Vin*_*dav 2 shell

我想知道$ 0和$ SHELL之间的确切区别.我知道这两个用于了解shell信息.如果有人用例子解释,那将是很好的.

如果两者都显示如下不同的值,它表示什么?

# echo $0
ksh
# echo $SHELL
/sbin/sh
#
Run Code Online (Sandbox Code Playgroud)

ONO*_*NOZ 5

$ SHELL提供了默认 shell 的完整路径.

$ 0给出了当前 shell 的名称.


Wil*_*ell 5

SHELL只是一个环境变量,而$0是当前运行程序的路径。用户应设置SHELL为首选 shell 的值,类似于用户设置PAGER和 的方式EDITOR。任何需要生成 shell 的程序都应该检查 的值SHELL以确定要调用哪个 shell。 SHELL不是您登录时获得shell 的路径。当新的 shell 运行时,它不会改变,就像PAGER它被设置为less但用户调用more,或者EDITOR设置为vi并且用户运行时一样emacs。例如:

$ echo $0 $SHELL
bash /bin/bash
$ exec csh
% echo $0 $SHELL
csh /bin/bash
Run Code Online (Sandbox Code Playgroud)