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"?
$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"