web-dev-qa-db-fra.com

Variable d'environnement HOSTNAME sous Linux

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

Par ailleurs, 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"?

20
user34614

$HOSTNAME est une variable Bash définie automatiquement (plutôt que dans un fichier de démarrage). Ruby exécute probablement sh pour son shell et 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, tel que ~/.bashrc.

En Ruby (irb montré):

>> require 'socket'
=> true
>> Socket.gethostname
=> "bazinga"
19
Dennis Williamson