Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash env命令未列出SHELL环境变量_Bash - Fatal编程技术网

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。