shell - $0 和 $SHELL 之间的差异

标签 shell

我想知道 $0 和 $SHELL 之间的确切区别。我知道这两个是用来知道shell信息的。
如果有人用例子来解释那就太好了。

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

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

最佳答案

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

关于shell - $0 和 $SHELL 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9804517/

相关文章:

linux - Bash 脚本帮助 - Tar 不使用变量?

ruby-on-rails - 在 Capistrano 任务中启动后台进程

linux - CentOS 中的替代命令

shell - rm -rf/base-dir-path/*/work 与/base-dir-path/*/*/work 不同

linux - Shell 脚本 (BASH) 中的多处理

linux - "script"命令退出 bash 脚本

linux - 如何在Linux中按用户获取所有文件和目录

linux - 在 unix shell 脚本中嵌套 for 循环

linux - 将带有单引号和双引号的参数传递给 shell 脚本

linux - Bash 脚本 : Output multiple lines to one line