web-dev-qa-db-ja.com

bashで入力された長いコマンドは、同じ行を上書きします

長いコマンドを入力するたびにBashを4.3.27に更新したため、ターミナルウィンドウの最後に到達すると、新しい行を続行する代わりに、先頭に「>」を使用して同じ行を上書きし、行が折り返されました(行を前後に移動できます。つまり、現在の行を上書きするだけではありません)

何かのようなもの:

私の端末の幅が30文字だとしましょう

更新前user@HOSTNAME ~$ echo "hello w orld!"

更新後<ME ~$ echo "hello world!"

そのbashの更新以降、私の環境では何も変更されていません。 $BASHOPTSは、「complete_fullquote」を除いて、以前と同じ値を表示します

「複数行の動作」を復元するにはどうすればよいですか?

よろしく

10
vegatripy

TERM変数を変更します。たとえば、私がした場合

~$ export TERM=xterm

その後、更新前のように、動作はうまくラップされます

~$ export TERM=linux

動作は更新後のものです

この投稿 askubuntuに色付きのPS1がある場合に役立つことがあります。

7
fredtantini

短い答え:

echo "set horizontal-scroll-mode off" >> ~/.inputrc

少し長い答え:

インタラクティブなbashシェルでは、ユーザー入力はREADLINEライブラリによって処理されます(詳細については、bashのmanページで探してください)。 bashのドキュメントによると、デフォルトの動作では、入力が画面の幅よりも長い場合、新しい行に折り返されます。 horizo​​ntal-scroll-mode変数を設定することにより、このデフォルトをオーバーライドできます。

デフォルトの動作が得られないため、以下を確認することをお勧めします。

  • 水平スクロールモードが設定されているかどうかを確認するために$ INPUTRCが指すファイル。 readline変数は、empty、null、on(大文字と小文字を区別しない)、または1の場合に設定されることに注意してください。
  • バージョンのbashをコンパイルした場合に使用した構成オプション
5
maiki