运行ssh命令时,“LANG:未定义的变量”

时间:2010-07-27 08:43:21

标签: linux fedora

在通过ssh运行命令时,我在使用LANG变量的FC8 linux机器中发现了一个问题。

在终端中,我可以看到我的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 个答案:

答案 0 :(得分:3)

使用SSH手册:

  

如果指定了命令,则为   在远程主机上执行而不是   登录shell。

登录shell的行为与非登录shell的行为完全不同,最明显的是,它们通常不会提供登录.profile文件。有关更多详细信息,请参阅shell文档。

答案 1 :(得分:0)

在linux上,您的语言环境变量通常列在/usr/share/locale中。你应该检查服务器machin他们使用的本地。它可能与您的机器不同。

编辑:抱歉,我误解了这个问题。

在bash中你应该做

export LANG="es_ES"

在其他shell中,您可能必须使用setenv而不是export

答案 2 :(得分:0)

您可以通过调用shell并让它像登录shell一样来解决ssh的这个功能:

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

根据您使用的实际shell,所需的选项可能是-l或其他。