«LANG: неопределенная переменная» при запуске команды ssh - PullRequest
2 голосов
/ 27 июля 2010

Я обнаружил проблему на наших Linux-машинах FC8 с переменной LANG при запуске команды через ssh.

В терминале я вижу, что моя переменная LANG - "es_ES"

[angelv@italia ~]$ echo $LANG
es_ES

Если я снова подключусь к своей машине через ssh, проблем не будет, а $ LANG по-прежнему "es_ES"

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

Но если я попытаюсь запустить команду с помощью ssh, эта переменная не определена ...

[angelv@italia ~]$ ssh italia 'echo $LANG'
LANG: Undefined variable.
[angelv@italia ~]$ 

Кто-нибудь знает, куда мне обратиться, чтобы найти преступника?

Ответы [ 3 ]

3 голосов
/ 27 июля 2010

Руководство по SSH:

Если указана команда, она выполняется на удаленном хосте вместо оболочки входа.

Оболочки входа ведут себя совершенно иначе, чемОболочки, не входящие в систему, особенно здесь, в том смысле, что они обычно не получают файлы входа .profile.Подробнее смотрите в документации по вашей оболочке.

0 голосов
/ 27 июля 2010

Вы можете обойти эту функцию ssh, вызвав вашу оболочку и попросив ее действовать как оболочка входа в систему:

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

В зависимости от используемой вами оболочки, обязательным параметром может быть -l или что-то еще.

0 голосов
/ 27 июля 2010

В linux ваша переменная локали обычно указывается в /usr/share/locale.Вы должны проверить на сервере, на каком компьютере они работают.Он может отличаться от вашего компьютера.

РЕДАКТИРОВАТЬ: извините, я ошибся вопросом.

в bash вы должны сделать

export LANG="es_ES"

в другой оболочке, которую вам, возможно, придется использовать setenv вместо export

...