以下是[root@machine123 /etc/profile.d] env | grep SHELL
命令的输出:
env
正如您所看到的,SHELL
的输出未列出$SHELL
环境变量。
但是当我打印[root@machine123 /etc/profile.d] echo $SHELL
/bin/bash
时,它就在那里:
SHELL
发生了什么,为什么env
输出中缺少{{1}}?
答案 0 :(得分:2)
如果您想知道本地变量,请使用set
命令:
set lets you change or display the names and values of all shell variables and functions
尝试set | grep SHELL
env
或printenv
显示全局(或环境)变量,set
本地变量(包括环境变量):
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_02.html
答案 1 :(得分:2)
如果您运行的shell不是export
此变量,则子进程将无法看到它,包括env
。
期望它存在并被设置为有用的值(在shell脚本之外)可能不可移植。如果未设置,则理智(至少在POSIX上)默认为SHELL=/bin/sh
。