2010-07-27 97 views
2

在通過ssh運行命令時,我們在FC8 linux機器上使用LANG變量發現了一個問題。運行ssh命令時出現「LANG:Undefined variable」

當一個終端,我可以看到我的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

我的shell是tcsh,所以未加載到非登錄shell的文件是〜/ .login 繼該文件解決了問題後。 感謝您的回覆。 – 2010-07-27 09:08:10

回答

0

在linux上,您的區域設置變量通常列在/usr/share/locale中。你應該在服務器上檢查他們使用的地方。它可能與您的機器不同。

編輯:對不起,我錯了問題。

在bash

你應該在其他的殼呢

export LANG="es_ES" 

您可能需要使用setenv,而不是export

+0

請注意,當啓動交互式shell而不是直接執行命令時,可以正確設置LANG;這是它不是一個缺少「出口」的線索,因爲我一開始就想到了。 – msw 2010-07-27 08:54:05

3

答曰SSH手冊:

如果指定了命令,它是 在遠程主機上執行而不是 登錄shell。

登錄炮彈的行爲比非登錄shell完全不同,最明顯的是在這裏,他們通常不源登錄.profile文件。有關更多詳細信息,請參閱shell文檔。

0

您可以通過調用你的shell,並要求它像一個登錄shell來解決SSH的此功能:

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

取決於你使用的,所需要的選項可能實際殼是-l或別的東西。