下面是env
命令的輸出:env命令不會列出SHELL環境變量
[[email protected] /etc/profile.d] env | grep SHELL
正如你所看到的env
輸出沒有列出SHELL
環境變量。
但是當我打印$SHELL
,它是存在的:
[[email protected] /etc/profile.d] echo $SHELL
/bin/bash
這是怎麼回事,爲什麼SHELL
從env
輸出不見了?
下面是env
命令的輸出:env命令不會列出SHELL環境變量
[[email protected] /etc/profile.d] env | grep SHELL
正如你所看到的env
輸出沒有列出SHELL
環境變量。
但是當我打印$SHELL
,它是存在的:
[[email protected] /etc/profile.d] echo $SHELL
/bin/bash
這是怎麼回事,爲什麼SHELL
從env
輸出不見了?
如果你想知道你的局部變量使用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
如果您正在運行的shell不是export
這個變量,它不會被子流程看到,包括env
。
期望它存在並被設置爲一個有用的值(在shell腳本之外)可能不是可移植的。一個理智的(至少在POSIX上)默認是假設它未被設置爲SHELL=/bin/sh
。
'declare -p SHELL'的輸出是什麼? – chepner
下面是輸出 [根@ machine123 /etc/profile.d中] #聲明-p SHELL 聲明 - SHELL = 「/斌/慶典」 –
貌似'從可變export'屬性不知何故被清除(例如''宣佈+ x SHELL'就可以做到這一點)。你是如何啓動root shell的? – chepner