7

os Xターミナルアプリでbashを使用していますが、履歴をスクロールするとカスタムの$PS1が壊れます。

PS1="${BLUE}\u${CYAN}@${RED}\h${BLUE}\w\n\[${red}\$${NC}\]"

PS1 = "$ {BLUE} \ u $ {CYAN} @ $ {RED} \ h $ {BLUE} \ w \ r \ n [$ {red} \$${NC}]"も試してみました

問題は改行にあるようです。私はSlackwareでこのbashプロンプトを使用しました。

4

6 に答える 6

8

すべてのエスケープ シーケンスの前後に [ と ] が必要です。$BLUE などにはこれらが含まれますか? そうでない場合は、これらの呼び出しで括弧で囲む必要があります。

于 2008-09-19T21:48:56.877 に答える
2

リモート(debian)システムにログオンするときに同じ問題が発生しました。.bashrc のエスケープされた値はすべて適切に括弧で囲まれているため、グーグルで調べたところ、ローカル システムとリモート システムのウィンドウ サイズの違いが原因である可能性があることがわかりました。追加する

shopt -s checkwinsize

リモートシステムの .bashrc に移動すると、問題が解決しました。

ソース: http://forums.macosxhints.com/showthread.php?t=17068

于 2010-01-10T22:22:59.470 に答える
2

このような「エスケープ」の問題を回避するには、進化をより複雑にする必要があります。これは、成長を開始するためのスケルトンである必要があります。

function _my_prompt ()
{ 
  # magic goes here
  my_prmpt=.... 
}
PROMPT_COMMAND='_my_prompt'
PS1="[\$my_prmpt] \$"
于 2009-12-16T01:32:45.463 に答える
0

私は今試しました

PS1="${BLUE}\u${CYAN}@${RED}\h${BLUE}\w${RED}\r\n\$\[${blue}\]"

前のコマンドを機能させるために必要なブラケット。

于 2008-09-19T21:48:12.463 に答える
0

問題が改行にあると思われる場合は、\n の代わりに \r\n を入れてみて、違いがあるかどうかを確認してください。

于 2008-09-19T20:33:57.913 に答える
0

PS1 でも同じ問題が (OS X 上で) 発生します。と を削除する\[\]

PS1="${BLUE}\u${CYAN}@${RED}\h${BLUE}\w\n${red}\$${NC}"

これはうまくいきます。角括弧は必要ですか? 私はそれらを使用したことはありませんが、ドキュメントから:

\[ 非印刷文字のシーケンスを開始します。これは、端末制御シーケンスをプロンプトに埋め込むために使用できます。

\] 非印刷文字のシーケンスを終了します。

于 2008-09-19T21:11:47.230 に答える