HOSTNAME environment variable on Linux
On my Linux box (Gentoo Linux 2.6.31 to be specific) I have noticed that the HOSTNAME environment variable is available in my shell, but not in scripts. For example,
$ echo $HOSTNAME
returns
xxxxxxxx.com,
but
$ ruby -e 'puts ENV["HOSTNAME"]'
returns
nil
On the other hand, the USER environment variable, for instance, is available both in the shell and in scripts.
I have noticed that USER appears in the list of environment variables that appears when I type
export
i.e.,
declare -x USER="infogrind"
but HOSTNAME doesn't. I suspect the issue has something to do with that.
My questions: 1) how can I make HOSTNAME available in scripts, and 2) for my better understanding, where is this variable initially set, and why is it not "exported"?
$HOSTNAME
is a Bash variable that's set automatically (rather than in a startup file). Ruby probably runs sh
for its shell and it doesn't include that variable. There's no reason you can't export it yourself.
bash$ echo $HOSTNAME
foobar
bash$ sh -c 'echo $HOSTNAME'
bash$ export HOSTNAME
bash$ sh -c 'echo $HOSTNAME'
foobar
You could add the export command to one of your startup files, such as ~/.bashrc
.
In Ruby (irb shown):
>> require 'socket'
=> true
>> Socket.gethostname
=> "bazinga"