HOSTNAME установлен в среде, но невидим для gmake - PullRequest
0 голосов
/ 15 июня 2011

Это мучило меня годами.Может кто-нибудь объяснить, почему $(HOSTNAME) не распространяется на значение среды HOSTNAME?Поиск различных комбинаций «make», «hostname», «gmake», «not set» и т. Д. Для меня не принес плодов.

Ответы [ 3 ]

4 голосов
/ 15 июня 2011

Это разница между переменной оболочки и переменной окружения.Попробуйте запустить «export HOSTNAME» перед тестом и посмотрите разницу.

Также сравните разницу в результатах между «set» и «env».

2 голосов
/ 15 июня 2011

Когда вы запускаете подпроцесс в оболочке (возможно, с помощью команды make), он наследует исходные переменные среды оболочки, а также все «экспортированные» переменные внутри оболочки. Если в исходной среде оболочки не было $ HOSTNAME и $ HOSTNAME не был экспортирован, он не будет в среде порожденного процесса.

Запустите export, чтобы увидеть список экспортируемых переменных. В моей системе $ HOSTNAME не включен в экспорт по умолчанию. Если вы хотите, чтобы HOSTNAME был доступен в порожденном процессе, вы можете export HOSTNAME в командной строке или в вашем .bashrc / profile.

0 голосов
/ 22 мая 2013

Если вы хотите экспортировать имя хоста, вы можете использовать:

export SERVERIP=$(hostname --ip-address)
echo $SERVERIP
...