28 votes

Variable d'environnement HOSTNAME sous Linux

Sur ma boîte Linux (Gentoo Linux 2.6.31 pour être précis) j'ai remarqué que la variable d'environnement HOSTNAME est disponible dans mon Shell, mais pas dans Shell. Par exemple ,

$ echo $HOSTNAME

renvoie à

xxxxxxxx.com,

mais

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

renvoie à

nil

En revanche, la variable d'environnement USER, par exemple, est disponible à la fois dans le Shell et dans les Shell.

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 pas le nom d'hôte. Je pense 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" ?

27voto

Damian Powell Points 315

$HOSTNAME est une variable Bash qui est définie automatiquement (plutôt que dans un fichier de démarrage). Ruby exécute probablement sh pour son Shell 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 pourriez ajouter la commande d'exportation à l'un de vos fichiers de démarrage, par exemple ~/.bashrc .

En Ruby (irb affiché) :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X