最も可能性の高い原因は、PS1
プロンプト文字列の形式が正しくないことです。非印刷制御文字をプロンプトに入れる場合\[ … \]
、プロンプトの幅を計算するときにそれらをカウントしないように Bash に指示するために、それらを で囲む必要があります。
幅の計算が正しくない場合、コマンドラインの表示は、説明した方法を含め、いくつかの方法で混乱する可能性があります。
あなたが書いたコメントで:
これは私の .bash_profile export PATH=${PATH}:/Users/offirgolan/android-sdk-macosx/platform-tools export TERM="xterm-color" alias ls="ls -G" export PS1="\e[ 1;30m][\e[\e[1;30m]\e[1;33m] \u@\H [\e[1;32m]\w[\e[0m] \e[1;30m] ]\n[[ \e[1;31m]\T[\e[0m]\e[1;30m] ] > \e[37m]"
先頭のバックスラッシュのないすべての余分なブラケットのために、ブラケットを含めることを意図していたように見えますが、それらは一貫性がなく、文字列には\e[\e[
. プロンプトにどのブラケットを表示するつもりだったのか、どの色にしたいのかを判断するのは難しいですが、PS1
もっと似ているはずです
PS1='\[\e[1;30m\][\[\e[1;30m\e[1;33m\] \u@\H [\[\e[1;32m\] \w\[\e[0m \e[1;30m\]]\n[ \[\e[1;31m\]\T\[\e[0m\e[1;30m\] ] > \[\e[37m\]'
プロからのヒント:プロンプトでターミナル コマンドをハードコーディングしないでください。それらは移植性がなく、すべてのターミナルで動作するわけではありません。代わりにtput
、現在の端末に適したコマンド シーケンスを選択するために使用します。例えば
PS1="\[$(tput setaf 1)\]Red Text\[$(tput sgr0)\] \$ "
プロンプト「Red Text $」と「Red Text」が赤色で表示されます。これにより\[ \]
、文字列にリテラルのエスケープ文字が散らばっていないため、ブラケットが正しいかどうかを確認するのがはるかに簡単になり、ニーモニックtput
コードにより、送信されているコマンドを簡単に把握できます。