HOSTNAME отсутствует в выводе env - PullRequest
0 голосов
/ 18 июня 2019

У меня есть этот код C getenv("HOSTNAME");, который возвращает NULL на виртуальной машине под управлением Linux (Guixsd).Во время исследования я выполнил следующие три команды, которые работают, как и ожидалось:

hostname => guixos

echo $HOSTNAME => guixos

cat /etc/hostname => guixos (без новой строки)

Так что я ожидал, что имя хоста также будет напечатано env, но ...

env | fgrep HOST =>

Итак, у меня есть три способа доступа к имени хоста, которые на самом деле работают, и два, которые я ожидаю, но не очень.Может кто-нибудь объяснить, почему эти два метода также не дают мне имя хоста?

1 Ответ

2 голосов
/ 18 июня 2019

HOSTNAME - это переменная, которую bash (но не другие оболочки) устанавливает по умолчанию. Не экспортируется.

Так как он не экспортируется, он не будет наследоваться env или какой-либо программой C, вызванной из оболочки bash.

...