2010-07-27 3 views
2

J'ai trouvé un problème dans nos machines Linux FC8 avec la variable LANG lors de l'exécution d'une commande via ssh."LANG: variable indéfinie" lors de l'exécution d'une commande ssh

Lorsque dans un terminal, je peux voir que ma variable LANG est "es_ES"

[[email protected] ~]$ echo $LANG 
es_ES 

Si je reconnecter à ma machine via ssh, il n'y a pas de problèmes et LANG $ est encore "es_ES"

[[email protected] ~]$ ssh italia 
Last login: Mon Jul 26 12:51:12 2010 from XXXXXXXXXXXX 
[[email protected] ~]$ echo $LANG 
es_ES 
[[email protected] ~]$ 

Mais si je tente d'exécuter une commande avec ssh, alors cette variable est indéfini ...

[[email protected] ~]$ ssh italia 'echo $LANG' 
LANG: Undefined variable. 
[[email protected] ~]$ 

Est-ce que quelqu'un sait où je devrais chercher pour trouver le coupable?

+0

Mon shell est tcsh, donc le fichier qui n'est pas chargé dans un shell non connecté est ~/.login Suite à ce fichier a résolu le problème. Merci pour les réponses. –

Répondre

0

Sur Linux, votre variable locale est généralement répertoriée dans /usr/share/locale. Vous devriez vérifier sur le machin de serveur quel local ils emploient. Cela peut différer de votre machine.

EDIT: désolé je me trompe la question.

en bash vous devez faire

export LANG="es_ES" 

dans d'autres shell que vous pourriez avoir à utiliser setenv au lieu de export

+0

note que LANG est défini correctement lorsqu'un shell interactif a été démarré mais pas avec l'exécution directe de commande; c'était l'indice que ce n'était pas un «export» manquant comme je l'ai pensé au premier coup d'oeil. – msw

3

Quoth le manuel SSH:

Si la commande est spécifié, il est exécuté sur l'hôte distant au lieu de un shell de connexion.

Les shells de connexion se comportent différemment des shells non connectés, notamment parce qu'ils ne génèrent généralement pas les fichiers de connexion .profile. Consultez la documentation de votre shell pour plus de détails.

0

Vous pourriez être en mesure de contourner cette caractéristique de ssh en invoquant votre shell et lui demandant d'agir comme un shell de connexion:

ssh italia "sh -l -c 'echo $LANG'" 

Selon le shell réel que vous utilisez, l'option requise pourrait être -l ou autre chose.

Questions connexes