web-dev-qa-db-ja.com

SSH経由でBashファイルを実行するときに、用語環境変数が設定されていません

リモートマシンでbashスクリプトを実行しようとしています。ターミナルでssh接続を開くと、スクリプトを簡単に実行できます。しかし、私がそれをそのように実行すると:

ssh user @ ip </ etc/script

エラーが発生します:

TERM環境変数が設定されていません。

私はここで何が間違っているのですか?

2
Simons0n

Sshの-tオプションを使用すると、ttyが接続され、適切なTERM環境変数が設定されるため、問題が解決する可能性があります。

ssh -t Host < script

入力をリダイレクトすると、sshクライアントはおそらく入力がTTYに接続されていないことを認識し、TERMが不適切であると判断します。

0
RedGrittyBrick

これらの行を宛先ホストの~user/.bashrcに配置してみてください。

if [ ! ${#TERM} > 0 ]
then
    export TERM=<value>
fi

$ {#var} 変数var の文字列の長さを返します。したがって、TERMの長さがNULL(未設定)または0の場合、TERM値を手動で設定できます。

$SSH_CLIENTまたは$SSH_CONNECTIONがゼロ以外であるかどうかをテストし、それらの条件下でのみTERM値をテストすることも考えられます。

最後に、これは.bashrcに入れる必要があります。これは、.bash_loginがログインシェルでのみ実行されるためです。

0
dafydd