サーバーに応じて端末の外観を変更する

サーバーに応じて端末の外観を変更する

私は2つの異なるサーバー(両方ともLinuxを実行しています)を持ち、SSH経由で接続します。

ログイン後、すべての端末の背景は同じように見えます。サーバーごとに異なる色のテーマや背景を設定したいです。たとえば、「server-1」に ssh すると端末の背景がグレーになり、「server-2」にログインすると青に変わります。

この目標をどのように達成できますか?

注:私は「MATE端末」を使用しています。

ベストアンサー1

XTermでは、次のものを使用できます。制御シーケンス.bashrc または同様のファイルにあります。良い:

if [ "${-//[!i]/}" = 'i' ]; then case $HOSTNAME in server1) echo -e '\e]11;darkgray\a\e]10;black\a' ;; server2) echo -e '\e]11;darkblue\a\e]10;gray\a' ;; esac fi

他の端末エミュレータにも同様の機能があります。

Puttyでは色を直接設定できますが、XTermのこれらの制御シーケンスが機能しているかどうかはわかりません(ほぼテストしていませんが、私の設定も見ていません)。

tty[ -t 1 ]stdoutをターミナル(orの終了状態など)にするのではなく、シェルインタラクティブフラグを確認する理由は、場合によっては(例えばAnsible)バッチにtty()を割り当てることができるからです。 stdoutに出力すると、ssh -ttストリームが「クリーン」になり、問題が発生する可能性があります(例:Ansible)。

注:Centos 7で利用可能なbash、mksh、zsh、およびkshのバージョンをテストしましたが、[ "${-//[!i]/}" = 'i' ]すべてのバージョンで動作します。

おすすめ記事