Переменная среды ИМЕНИ ХОСТА на Linux

На моем поле Linux (хинду Linux 2.6.31, чтобы быть конкретным) я заметил, что переменная среды ИМЕНИ ХОСТА доступна в моей оболочке, но не в сценариях. Например,

$ echo $HOSTNAME

возвраты

xxxxxxxx.com,

но

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

возвраты

nil

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

Я заметил, что ПОЛЬЗОВАТЕЛЬ появляется в списке переменных среды, который появляется, когда я ввожу

export

т.е.

declare -x USER="infogrind"

но ИМЯ ХОСТА не делает. Я подозреваю, что проблема имеет некоторое отношение к этому.

Мои вопросы: 1) как может я делать ИМЯ ХОСТА доступным в сценариях и 2) для моего лучшего понимания, где это является переменным первоначально набор, и почему это не "экспортируется"?

20
задан 19.04.2010, 11:16

1 ответ

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

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

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

Вы могли добавить команду экспорта к одному из Ваших файлов запуска, такой как ~/.bashrc.

В Ruby (irb показанный):

>> require 'socket'
=> true
>> Socket.gethostname
=> "bazinga"
20
ответ дан 07.12.2019, 10:13

Теги

Похожие вопросы