HOSTNAME variable de entorno en Linux

21

En mi caja de Linux (Gentoo Linux 2.6.31 para ser específico), he notado que la variable de entorno HOSTNAME está disponible en mi shell, pero no en scripts. Por ejemplo,

$ echo $HOSTNAME

devoluciones

xxxxxxxx.com,

pero

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

devoluciones

nil

Por otro lado, la variable de entorno USER, por ejemplo, está disponible tanto en el shell como en los scripts.

He notado que USER aparece en la lista de variables de entorno que aparece cuando escribo

export

es decir,

declare -x USER="infogrind"

pero HOSTNAME no lo hace. Sospecho que el problema tiene algo que ver con eso.

Mis preguntas: 1) ¿cómo puedo hacer que HOSTNAME esté disponible en los scripts, y 2) para mi mejor comprensión, ¿dónde se establece inicialmente esta variable y por qué no se "exporta"?


fuente

Respuestas:

21

$HOSTNAMEes una variable Bash que se configura automáticamente (en lugar de en un archivo de inicio). Ruby probablemente corre shpor su caparazón y no incluye esa variable. No hay razón para que no pueda exportarlo usted mismo.

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

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

Puede agregar el comando de exportación a uno de sus archivos de inicio, como ~/.bashrc.

En Ruby (se muestra irb):

>> require 'socket'
=> true
>> Socket.gethostname
=> "bazinga"
Pausado hasta nuevo aviso.
fuente
2
Por lo general, es mejor usar gethostname()debido a esto.
user1686
3
El estándar posix enumera las variables de entorno que debe esperar en un sistema compatible con posix, y HOSTNAME no está en la lista: pubs.opengroup.org/onlinepubs/009695399/basedefs/…
qneill