2015-06-12 31 views
2

下面是env命令的輸出:env命令不會列出SHELL環境變量

[[email protected] /etc/profile.d] env | grep SHELL 

正如你所看到的env輸出沒有列出SHELL環境變量。

但是當我打印$SHELL,它是存在的:

[[email protected] /etc/profile.d] echo $SHELL 
/bin/bash 

這是怎麼回事,爲什麼SHELLenv輸出不見了?

+0

'declare -p SHELL'的輸出是什麼? – chepner

+0

下面是輸出 [根@ machine123 /etc/profile.d中] #聲明-p SHELL 聲明 - SHELL = 「/斌/慶典」 –

+0

貌似'從可變export'屬性不知何故被清除(例如''宣佈+ x SHELL'就可以做到這一點)。你是如何啓動root shell的? – chepner

回答

2

如果您正在運行的shell不是export這個變量,它不會被子流程看到,包括env

期望它存在並被設置爲一個有用的值(在shell腳本之外)可能不是可移植的。一個理智的(至少在POSIX上)默認是假設它未被設置爲SHELL=/bin/sh

相關問題