2

sshを介してコマンドを実行すると、FC8Linuxマシンで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 マニュアルを引用します。

コマンドが指定されている場合、ログイン シェルの代わりにリモート ホストで実行されます。

ログイン シェルは、非ログイン シェルとはまったく異なる動作をします。最も顕著なのは、通常、ログイン.profileファイルを取得しないという点です。詳細については、シェルのドキュメントを参照してください。

于 2010-07-27T08:48:20.903 に答える
0

Linuxでは、ロケール変数は通常、にリストされてい/usr/share/localeます。サーバーマシンで、それらが使用しているローカルを確認する必要があります。お使いのマシンとは異なる場合があります。

編集:申し訳ありませんが、質問を間違えました。

bashで行う必要があります

export LANG="es_ES"

setenv他のシェルでは、代わりに使用する必要があるかもしれませんexport

于 2010-07-27T08:46:28.287 に答える
0

シェルを呼び出してログインシェルのように動作するように要求することで、sshのこの機能を回避できる場合があります。

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

使用している実際のシェルに応じて、必要なオプションは-lまたは他のものになる可能性があります。

于 2010-07-27T08:55:10.487 に答える