在通过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 ~]$
有谁知道我应该找到罪魁祸首?
答案 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
或其他。