Bash env命令未列出SHELL环境变量
下面是Bash env命令未列出SHELL环境变量,bash,Bash,下面是env命令的输出: [root@machine123 /etc/profile.d] env | grep SHELL set lets you change or display the names and values of all shell variables and functions 正如您所看到的,env的输出没有列出SHELL环境变量 但当我打印$SHELL时,它就在那里: [root@machine123 /etc/profile.d] echo $SHELL /bi
env
命令的输出:
[root@machine123 /etc/profile.d] env | grep SHELL
set lets you change or display the names and values of all shell variables and functions
正如您所看到的,env
的输出没有列出SHELL
环境变量
但当我打印$SHELL
时,它就在那里:
[root@machine123 /etc/profile.d] echo $SHELL
/bin/bash
发生了什么,为什么
env
输出中缺少SHELL
?如果您想知道本地变量,请使用set
命令:
[root@machine123 /etc/profile.d] env | grep SHELL
set lets you change or display the names and values of all shell variables and functions
尝试set | grep SHELL
env
或printenv
显示全局(或环境)变量,set
本地变量(包括环境变量):
如果正在运行的shell未导出此变量,则子进程(包括
env
)将看不到该变量
期望它存在并设置为有用的值(在shell脚本之外)可能是不可移植的。一个正常的(至少在POSIX上)默认值是假设
SHELL=/bin/sh
未设置。声明-p SHELL的输出是什么?下面是输出[root@machine123/etc/profile.d]#declare-p SHELL declare--SHELL=“/bin/bash”看起来变量的export
属性以某种方式被清除了(declare+xshell
可以这样做)。您是如何启动根SHELL的?如果连接是SSH,则在env命令下列出SHELL变量,但如果我使用telnet,则不会列出SHELL env。