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"?

1 Answer

$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" 
2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like