linux - env 输出中缺少 HOSTNAME
问题描述
我有这个 C 代码getenv("HOSTNAME");
,它NULL
在运行 Linux (Guixsd) 的 VM 上返回。在调查时,我运行了以下三个命令,它们按预期工作:
hostname
=>guixos
echo $HOSTNAME
=>guixos
cat /etc/hostname
=> guixos
(没有换行符)
所以我希望主机名也会被env打印出来,但是......
env | fgrep HOST
=>
所以,我有三种访问实际有效的主机名的方法,还有两种我希望能工作的方法,但没有。有人可以解释为什么这两种方法也不给我主机名吗?
解决方案
HOSTNAME
是 bash(但不是其他 shell)默认设置的变量。它不出口。
由于它没有被导出,因此它不会被env
bash shell 继承或从任何 C 程序调用。