bash履歴を介してアクセスすると、画面上の長いコマンドの先頭が切り捨てられます。

bash履歴を介してアクセスすると、画面上の長いコマンドの先頭が切り捨てられます。

私はOS X Lionでbashとscreenのデフォルトバージョンを使用しています。

スクリーンセッション中にbash履歴を後ろにスクロールして、終了するのに十分な長さのコマンドを確認しました。

いくつかのコマンドを入力して起動することもできます。

selassid@tem02:~$ ls ljmix/fiftyfifty_softsphere/T0.350/r2.43/0.565421311859c0.1
83279836214c0.144847759343/

上記のように正しくラップされますが、bash履歴を介してアクセスするために上キーを押すと、コンソールに次のものだけが表示されます。

83279836214c0.144847759343/

そのため、プロンプトとコマンドの最初の行全体が失われ、編集が困難になります。最初の行にスクロールすると表示されますが、出力の最後の行を上書きします。コマンドを実行すると、最初の行の残りの部分が表示され、すべてが期待どおりに表示されます。

selassid@tem02:~$ ls ljmix/fiftyfifty_softsphere/T0.350/r2.43/0.565421311859c0.1
83279836214c0.144847759343/
total 1792
...
selassid@tem02:~$ 

もっと疑問に思うのは、履歴を使用して長いコマンドにアクセスしたがまだ実行していない場合は、別のウィンドウに切り替えてから戻るなどの画面C-aコマンドを使用するか、現在のターミナルウィンドウをクリックして再び戻る場合は、履歴コマンドを正しく表示しますになります。

世の中PS1='\u@\h:\w$ '、不思議なことはありませんでした。

履歴を使用するときにコマンド全体を正しく表示する方法はありますか?画面を閉じる設定を試しましたが、状況がさらに悪化するだけです。

stty -a示す:

speed 9600 baud; 46 rows; 80 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
    -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
    -extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel iutf8
    -ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
    -dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
    eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
    min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
    stop = ^S; susp = ^Z; time = 0; werase = ^W;

ベストアンサー1

上記のコメントの答えは、起動スクリプトの1つでTERMを上書きしているようです。画面内では、用語を「xterm-256color」ではなく「screen」に設定する必要があります。

シェル起動スクリプトを確認しましょう。 ~/.bashrc、/etc/bash/bashrc、およびすべての設定方法に応じて、 ~/.bash_profile および /etc/profile などの他の項目も可能です。 TERM = "..."設定が表示されたら、その設定を削除する必要があります。

おすすめ記事