我有这个C代码getenv("HOSTNAME");
,它在运行Linux(Guixsd)的VM上返回NULL
。在调查期间,我运行了以下三个命令,它们按预期运行:
hostname
=> guixos
echo $HOSTNAME
=> guixos
cat /etc/hostname
=> guixos
(无换行符)
因此,我希望env也可以打印出主机名,但是...
env | fgrep HOST
=>
因此,我有三种访问主机名的方法有效,而我希望有两种方法可以,但不行。有人可以解释为什么这两种方法也没有给我主机名吗?
答案 0 :(得分:2)
HOSTNAME
是bash(但不是其他shell)默认设置的变量。它不会导出。
由于未导出,因此env
或从bash shell调用的任何C程序都不会继承它。