2

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

在终端中,我可以看到我的 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 ~]$ 

有人知道我应该在哪里找到罪魁祸首吗?

4

3 回答 3

3

引用 SSH 手册:

如果指定了 command,它将在远程主机而不是登录 shell 上执行。

登录 shell 的行为与非登录 shell 完全不同,最值得注意的是,它们通常不获取登录.profile文件。有关更多详细信息,请参阅您的 shell 文档。

于 2010-07-27T08:48:20.903 回答
0

您可以通过调用您的 shell 并要求它像登录 shell 一样工作来解决 ssh 的这个特性:

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

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

于 2010-07-27T08:55:10.487 回答
0

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

编辑:对不起,我弄错了这个问题。

在 bash 你应该做

export LANG="es_ES"

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

于 2010-07-27T08:46:28.287 回答