2010-07-27 2 views
2

Я нашел проблему в наших машинах Linux FC8 с переменной LANG при запуске команды через ssh.«LANG: неопределенная переменная» при запуске команды ssh

Когда в терминале, я вижу, что моя переменная LANG является «es_ES»

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

Если я подключить обратно к моей машине через SSH, нет никаких проблем, и $ LANG еще «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] ~]$ 

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

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

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

+0

My shell is tcsh, поэтому файл, который не загружен в оболочку без входа, равен ~/.login После этого файла решена проблема. Спасибо за ответы. –

ответ

0

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

EDIT: извините, но я ошибаюсь.

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

export LANG="es_ES" 

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

+0

Обратите внимание, что LANG устанавливается правильно, когда была запущена интерактивная оболочка, но не с прямым выполнением команды; это было ключом к тому, что это был не недостающий «экспорт», как я тоже думал о первом взгляде. – msw

3

Quoth руководство SSH:

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

Внешние оболочки для входа в систему работают совсем по-другому, чем недействительные оболочки, особенно в том случае, если они обычно не содержат файлы входа .profile. Подробнее см. Документацию к оболочке.

0

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

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

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

Смежные вопросы