LinuxのHOSTNAME環境変数


21

私のLinuxボックス(具体的にはGentoo Linux 2.6.31)では、HOSTNAME環境変数はシェルでは使用できますが、スクリプトでは使用できないことに気付きました。例えば、

$ echo $HOSTNAME

戻り値

xxxxxxxx.com,

だが

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

戻り値

nil

一方、たとえば、USER環境変数は、シェルとスクリプトの両方で使用できます。

入力時に表示される環境変数のリストにUSERが表示されることに気付きました

export

すなわち、

declare -x USER="infogrind"

HOSTNAMEはしません。私は問題がそれと何か関係があると思う。

私の質問:1)HOSTNAMEをスクリプトで使用可能にする方法、および2)理解を深めるために、この変数が最初に設定される場所と、なぜ「エクスポート」されないのですか?

回答:


21

$HOSTNAME(起動ファイルではなく)自動的に設定されるBash変数です。Rubyはおそらくshそのシェルで実行され、その変数は含まれていません。自分でエクスポートできない理由はありません。

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

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

エクスポートコマンドを、などのスタートアップファイルの1つに追加できます~/.bashrc

Rubyの場合(irbを表示):

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

2
gethostname()このため、通常は使用することをお勧めします。
user1686

3
POSIX標準では、POSIX準拠のシステムに期待すべき環境変数を列挙し、HOSTNAMEはリストにありません。pubs.opengroup.org/onlinepubs/009695399/basedefs/...
qneill
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.