iTerm2 からリモートログインした後のシェルプロンプト (ps1) の奇妙なエスケープシーケンスを修正する方法

iTerm2 からリモートログインした後のシェルプロンプト (ps1) の奇妙なエスケープシーケンスを修正する方法

Ubuntu 14.04 からリモート マシンにログインした後、以下の奇妙なプロンプトが表示されます。これは、PuTTY 経由ではなく、Ubuntu GUI ターミナルを使用しているときにのみ発生します。修正方法はありますか?

これはリモート サーバーにログインした後の出力です。

ここに画像の説明を入力してください

答え1

これはまさに iTerm2 の統合です。これを削除するのではなく、iTerm2 の動的なテストを統合スクリプト内で実行する必要があります。注意: 以下の ssh に関する警告を参照してください。

itermが応答するANSIシーケンスがあり、これはどのシェル/sshがアクティブであるかに関係なく機能します。独自のシーケンスを作成したい人のために、シーケンスは次のとおりです。printf '\x1b[1337n'

.bashrc (または使用するシェル init) には、おそらく次のような内容が含まれています。

テスト -r ~/.iterm2_shell_integration.bash && . ~/.iterm2_shell_integration.bash

おそらく最初のテストは不要です。さらに醜いものに変更するだけです:

isiterm2.sh&&テスト -r ~/.iterm2_shell_integration.bash && . ~/.iterm2_shell_integration.bash

VS Code リモート エクスプローラー/SSH ユーザー VSコードは起動時にSSH接続に文字を自動入力/フィードするようです。これらのコマンドはisIterm2.shのsttyリセットシーケンスによって切り取られる可能性があります。私の短期的なハックは、プロンプトの2番目の表示でこのチェック/ロードを行うことです。これはそのようなただし、これは間に合わせの策です。

答え2

弦は実際にはANSIシーケンスむしろ、これらは ANSI シーケンスとして開始されますが、リモート マシン上で (何らかのスクリプト エラーにより) 変換され、ほとんどの文字が別の形式に変換されます。

アンANSIシーケンス例えば

escape[A

;の前にオプションの が付いている可能性がありますAが、問題のある出力では133(は 8 進数 133 です) と表示されます。同様に、スクリーンショットではいくつかの場所で ASCII エスケープ文字ではなく[リテラルが表示されています。\033

おそらく、GUI ターミナルと Putty の違いは、前者がTERMに設定されている可能性があるのに対しxterm-256color、PuTTY には独自の設定があり、TERMPuTTY では が設定されていない (デフォルトはxterm) ことです。

Ubuntu 14.04はこれを独自に実行したわけではない(しばらく前から存在していたが、誰も不満を言っていない)これ) なので、これはインストール後の「改善」です。提案されているように、まずは独自のスクリプト.bashrc(または追加したカラーテーマ スクリプト - バグが多いものもあります) を調べてください。

答え3

これはiTerm2のシェル統合のようです。http://www.iterm2.com/documentation-shell-integration.html

.iterm2_shell_integration.bash が .bash_profile によってソース化されているかどうかを確認します。

答え4

これは、Iterm2 の非標準エスケープ コードが原因です。独自のエスケープコード、こちらで発行されています:シェル統合により Linux 端末に無効な文字が表示されるこの問題を解決するには、iTerm2 統合がインストールされているリモート サーバーで次のコマンドを実行します。

  1. curl https://raw.githubusercontent.com/gnachman/iTerm2/master/tests/isiterm2.sh > ~/.isiterm2.sh && chmod ug+x ~/.isiterm2.sh

  2. スクリプトが成功した場合にシェル統合をロードする条件を設定するために、.bash_profile(または、または任意の場所)を変更します。.profile

    ~/.isiterm2.sh && test -e "$HOME/.iterm2_shell_integration.bash" && source "$HOME/.iterm2_shell_integration.bash"

関連情報