Linux上的HOSTNAME环境变量


21

在我的Linux机器上(具体来说是Gentoo Linux 2.6.31),我注意到HOSTNAME环境变量在我的Shell中可用,但在脚本中不可用。例如,

$ echo $HOSTNAME

退货

xxxxxxxx.com,

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

退货

nil

另一方面,例如,USER环境变量在外壳程序和脚本中均可用。

我注意到USER出现在我键入时出现的环境变量列表中

export

declare -x USER="infogrind"

但HOSTNAME却没有。我怀疑这个问题与此有关。

我的问题:1)如何使HOSTNAME在脚本中可用,以及2)为了更好地理解,此变量最初设置在哪里,为什么不“导出”?

Answers:


21

$HOSTNAME是自动设置的Bash变量(而不是在启动文件中)。Ruby可能会sh为其外壳运行,并且不包含该变量。没有理由您自己不能导出它。

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

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

您可以将export命令添加到一个启动文件中,例如~/.bashrc

在Ruby中(显示了irb):

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

2
因此通常最好使用gethostname()
user1686'4

3
posix标准枚举了在符合posix的系统上应该期望的环境变量,并且HOSTNAME不在列表中:pubs.opengroup.org/onlinepubs/009695399/basedefs/…–
qneill
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.