环境输出中缺少主机名

HOSTNAME missing from env output

我有这个 C 代码 getenv("HOSTNAME");,它 returns NULL 在 VM 运行 Linux (Guixsd) 上。在调查我 运行 以下三个命令时,它们按预期工作:

hostname => guixos

echo $HOSTNAME => guixos

cat /etc/hostname => guixos(无换行符)

所以我希望主机名也被 env 打印出来,但是...

env | fgrep HOST =>

所以,我有三种访问主机名的方法,它们确实有效,还有两种我希望有效,但没有。有人可以解释为什么这两种方法不能同时提供主机名吗?

HOSTNAME 是 bash(但不是其他 shell)默认设置的变量。未导出。

由于它没有被导出,它不会被 env 或从 bash shell 调用的任何 C 程序继承。