私のローカル端末にはTERM = konsole-256colorがありますが、接続するすべてのリモートマシンにこの定義があるわけではありません。
sshにリモートマシンのTERMを変更させることは可能ですか?ローカルデスクトップの構成を変更するだけで、リモートマシンの.bash *スクリプトを変更しませんか?
私のローカル端末にはTERM = konsole-256colorがありますが、接続するすべてのリモートマシンにこの定義があるわけではありません。
sshにリモートマシンのTERMを変更させることは可能ですか?ローカルデスクトップの構成を変更するだけで、リモートマシンの.bash *スクリプトを変更しませんか?
回答:
次のエイリアスを.bashrcファイルに追加しました。OGの回答を使用しますが、エイリアスでラップします。魅力のように動作します;)
# Force xterm-color on ssh sessions
alias ssh='TERM=xterm-color ssh'
TERM=vt100 ssh some.host.name
リモートで、echo $ TERMを実行します。
男ssh:
ssh reads ~/.ssh/environment, and adds lines of the format
“VARNAME=value” to the environment if the file exists and users are
allowed to change their environment. For more information, see the
PermitUserEnvironment option in sshd_config(5).
編集:
ラット、私はそれがローカル側にあることを望みました、まだ、意志があれば、方法があります。男ssh_conf:
SendEnv
Specifies what variables from the local environ(7) should be sent
to the server. Note that environment passing is only supported
for protocol 2. The server must also support it, and the server
must be configured to accept these environment variables. Refer
to AcceptEnv in sshd_config(5) for how to configure the server.
Variables are specified by name, which may contain wildcard char-
acters. Multiple environment variables may be separated by
whitespace or spread across multiple SendEnv directives. The
default is not to send any environment variables.
これは、受信側のsshdの構成に応じて、「リモートファイル変更なし」の要件を満たす場合と満たさない場合があります。
ここに私が一緒に投げた私の迅速で汚いソリューションがあります。もっと良いものが好きです。代わりにシェルスクリプトを使用できると思います。TERM
値の調整は、読者の練習として残しておきます。
# To move into a separate plugin...
function ssh {
if [[ "${TERM}" = screen* || konsole* ]]; then
env TERM=screen ssh "$@"
else
ssh "$@"
fi
}
理想的には、相手側のTERMをチェックするようなことをしてControlPersist
、複数の接続の長い遅延を防ぐためにそれらを使用します。