サーバー上のSSHとフィッシュシェルを介したシンボルを持つWindows bash矢印

サーバー上のSSHとフィッシュシェルを介したシンボルを持つWindows bash矢印

やや複雑な質問があります。私はWindows 10の1周年アップデートとUbuntu用のBashを使用しています。経由でサーバーに接続していますssh。このサーバーは、fish shell矢印を押すとコマンド履歴を表示するか、次のコマンドを推測するのではなく、いくつかのシンボルのみを印刷します。これが私が見るものです:

  • arrow up印刷[A
  • arrow down印刷[B
  • arrow right印刷[C
  • arrow left印刷[D

しかし、矢印はにありますbash。なぜこれが起こるのか知っていますか?

答え1

私は同じ問題がありましたが、少し異なる設定を使用しました。

  • WSL(UbuntuとFishを含む)
  • SSH経由でUbuntuとBashを実行しているリモートサーバーに接続する

また、リモートサーバーにフィッシュをインストールして問題を解決しました。

答え2

Windows 10 1周年ア​​ップデートとUbuntuのBashデフォルトでは、コンソールウィンドウでbashを実行すると、対応するエスケープシーケンス(矢印キーなどの入力を含む)はMSDNに文書化されています。

それ自体はsshほとんど関係ありません(リモートコンピュータと文字を変更せずに送受信)。重要なのは、リモートシステムで使用される端末記述と、フィッシュシェルがエントリを初期化するかどうかです。

あなたが見ているという点で[Aリモートコンピュータでは、これは端末が通常モードのカーソルキー(初期化されていない状態)を送信していることを意味します。これは、設定がハードコーディングされて.inputrcいるか(ほとんどのファイルを参照)、初期化されていない「linux」端末記述に基づく傾向があるbashと一致します。もちろん、Windows側では、bashが既存の項目と連携するように構成されているため、「動作」します。遠い側では、魚の殻はそこにあるすべてを使用しますTERM(おそらく「xterm」)。 「xterm」の場合、fishshellは予想します。申請方法^[OAvsなどのカーソルシーケンス^[[Aを見ると、エラー処理が発生します。

追加資料:

答え3

理由:

接続しようとしているセッションは、bashシェルとは異なる端末エミュレーションを使用します。

簡単な解決策:

SSHセッションでは矢印キーを使用しないでください。

より難しい解決策:

ターゲットサーバーとフィッシュシェルを調べ、それらが使用する端末エミュレーションとそれを変更するオプションを決定します。 Windows用のBashを調べて、Bashが使用する端末エミュレーションとそれを変更するために使用できるオプションを学びます。 2つの間の重なり合う部分を見つけて実装します。

Windowsソリューション:

Windowsでは、Putty(または他のSSHクライアントソフトウェア)を使用してターゲットサーバーに直接接続します。

Windows用の無料のオープンソースソリューション:

使用端末'またはそうです。

ハードコアソリューション:

実行できるbashスクリプトの作成Windows用のリリース必要な端末エミュレーションを自動的に検出し、ケースごとに実装するため、SSH対応デバイスにリモートでアクセスし、常に矢印キーを使用できます。

関連情報