Linux'ta HOSTNAME ortam değişkeni


21

Linux kutumda (spesifik olarak Gentoo Linux 2.6.31) HOSTNAME ortam değişkeninin kabuğumda olduğunu, ancak komut dosyalarında olmadığını fark ettim. Örneğin,

$ echo $HOSTNAME

İadeler

xxxxxxxx.com,

fakat

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

İadeler

nil

Öte yandan, örneğin, USER ortam değişkeni hem kabukta hem de komut dosyalarında kullanılabilir.

USER yazdığımda görünen ortam değişkenleri listesinde göründüğünü fark ettim

export

yani

declare -x USER="infogrind"

ancak HOSTNAME desteklemiyor. Sorunun bununla bir ilgisi olduğundan şüpheleniyorum.

Sorularım: 1) HOSTNAME programını komut dosyalarında nasıl kullanılabilir hale getirebilirim ve 2) daha iyi anladığım için, bu değişken başlangıçta nerede ayarlanır ve neden "dışa aktarılmaz"?

Yanıtlar:


21

$HOSTNAMEotomatik olarak ayarlanan bir Bash değişkenidir (bir başlangıç ​​dosyasından ziyade). Ruby muhtemelen shkabuğu için koşar ve bu değişkeni içermez. Kendiniz dışa aktaramazsınız.

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

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

Export komutunu başlangıç ​​dosyalarınızdan birine (ör ~/.bashrc.

Ruby'de (irb gösterilir):

>> require 'socket'
=> true
>> Socket.gethostname
=> "bazinga"

2
Bu nedenle kullanmak genellikle daha iyidir gethostname().
user1686

3
Posix standardı, posix uyumlu bir sistemde beklemeniz gereken ortam değişkenlerini numaralandırır ve HOSTNAME listede yok: pubs.opengroup.org/onlinepubs/009695399/basedefs/…
qneill
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.