Переменная среды HOSTNAME в Linux

на моем Linux-боксе (Gentoo Linux 2.6.31, если быть точным) я заметил, что переменная окружения HOSTNAME доступна в моей оболочке, но не в скриптах. Например,

$ echo $HOSTNAME

возвращает

xxxxxxxx.com,

но

$ ruby -e 'puts ENV["HOSTNAME"]'

возвращает

nil

С другой стороны, переменная окружения USER, например, доступна как в оболочке, так и в скриптах.

Я заметил, что пользователь появляется в списке среды переменные, которые появляются при вводе

export

то есть,

declare -x USER="infogrind"

но HOSTNAME нет. Я подозреваю, что проблема имеет какое-то отношение к этому.

мои вопросы: 1) Как я могу сделать имя хоста доступным в скриптах и 2) для лучшего понимания, где эта переменная изначально установлена, и почему она не "экспортируется"?

17
задан Dennis Williamson
18.12.2022 21:50 Количество просмотров материала 2919
Распечатать страницу

1 ответ

$HOSTNAME - это переменная Bash, которая устанавливается автоматически (а не в файле автозагрузки). Ruby, вероятно, работает sh для своей оболочки, и она не включает эту переменную. Нет причин, по которым вы не можете экспортировать его самостоятельно.

bash$ echo $HOSTNAME
foobar
bash$ sh -c 'echo $HOSTNAME'

bash$ export HOSTNAME
bash$ sh -c 'echo $HOSTNAME'
foobar

вы можете добавить команду export в один из файлов автозагрузки, например ~/.bashrc.

14
отвечен Dennis Williamson 2022-12-20 05:38

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх