Variable d'environnement HOSTNAME sous Linux


17

Sur ma machine Linux (Gentoo Linux 2.6.31 pour être spécifique), j'ai remarqué que la variable d'environnement HOSTNAME est disponible dans mon shell, mais pas dans les scripts. Par exemple,

$ echo $HOSTNAME

résultats

xxxxxxxx.com,

mais

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

résultats

nil

D'autre part, la variable d'environnement USER, par exemple, est disponible à la fois dans le shell et dans les scripts.

J'ai remarqué que USER apparaît dans la liste des variables d'environnement qui apparaît lorsque je tape

export

c'est à dire.,

declare -x USER="infogrind"

mais HOSTNAME ne le fait pas. Je soupçonne que le problème a quelque chose à voir avec cela.

Mes questions: 1) comment puis-je rendre HOSTNAME disponible dans les scripts, et 2) pour ma meilleure compréhension, où cette variable est-elle initialement définie et pourquoi n'est-elle pas "exportée"?

Réponses:


16

$HOSTNAME est une variable Bash définie automatiquement (plutôt que dans un fichier de démarrage). Ruby court probablement sh pour sa coquille et il n'inclut pas cette variable. Il n'y a aucune raison pour que vous ne puissiez pas l'exporter vous-même.

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

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

Vous pouvez ajouter la commande d'exportation à l'un de vos fichiers de démarrage, tels que ~/.bashrc.

En Ruby (irb montré):

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

2
Il est généralement préférable d'utiliser gethostname() à cause de ce.
grawity

2
Le standard posix énumère les variables d'environnement auxquelles vous pouvez vous attendre sur des systèmes compatibles posix. HOSTNAME n'est pas dans la liste: pubs.opengroup.org/onlinepubs/009695399/basedefs/…
qneill
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.