env命令不列出SHELL环境变量

时间:2015-06-12 11:46:53

标签: bash

以下是[root@machine123 /etc/profile.d] env | grep SHELL 命令的输出:

env

正如您所看到的,SHELL的输出未列出$SHELL环境变量。

但是当我打印[root@machine123 /etc/profile.d] echo $SHELL /bin/bash 时,它就在那里:

SHELL

发生了什么,为什么env输出中缺少{{1}}?

2 个答案:

答案 0 :(得分:2)

如果您想知道本地变量,请使用set命令:

set lets you change or display the names and values of all shell variables and functions

尝试set | grep SHELL

envprintenv显示全局(或环境)变量,set本地变量(包括环境变量): http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_02.html

答案 1 :(得分:2)

如果您运行的shell不是export此变量,则子进程将无法看到它,包括env

期望它存在并被设置为有用的值(在shell脚本之外)可能不可移植。如果未设置,则理智(至少在POSIX上)默认为SHELL=/bin/sh