2008-09-19 83 views
7

我在OS X終端應用中使用bash,當我滾動瀏覽歷史記錄時,我的自定義$ PS1會中斷。Bash提示在OS X終端打破

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

還試圖 PS1 =「$ {BLUE} \ U $ {CYAN} @ $ {RED} \ H $ {BLUE} \ W \ r \ n [$ {紅色} \ {$$ NC }]「

問題似乎在換行符。我已經在Slackware上使用了這個bash提示符。

+0

默認mac bash或macports bash? – kch 2008-09-19 21:14:36

回答

8

你需要[和]每一個轉義序列;做藍色之類的東西包括這些?如果不是,他們需要用這些電話括起來。

+0

似乎是最後一行所需要的。在之前的一行中並不需要。 – Milhous 2008-09-20 04:16:15

0

如果問題似乎與換行符一樣,請嘗試將\ r \ n代替\ n,然後查看它是否有所作爲。

0

我在PS1上遇到了同樣的問題(在OS X上)。 如果我刪除\[\]

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

能正常工作。是否需要sqare括號?我從來沒有使用過,但是從the docs

\[ 開始的非打印字符的序列。這可以用來將 的終端控制序列嵌入到 的提示中。

\] 結束一系列非打印字符。

+0

我試過這個,但是當我使用前綴commad鍵,我得到一些殘留 millermj @ Leonidas〜 $ find ./ -na – Milhous 2008-09-19 21:28:22

0

現在我已經試過

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

這似乎工作 ,使以前的命令工作所需的支架。

2

爲了避免這樣的「逃逸」爲你提示需要困難evole更加複雜,這應該是啓動上生長骨架:

function _my_prompt() 
{ 
    # magic goes here 
    my_prmpt=.... 
} 
PROMPT_COMMAND='_my_prompt' 
PS1="[\$my_prmpt] \$" 
2

我在遠程登錄時同樣的問題(Debian的)系統。由於.bashrc中的轉義值都被很好的括起來,我做了一些Google搜索,發現原因可能是本地和遠程系統的窗口大小不同。添加

禁用了javascript -s checkwinsize

對遠程系統的.bashrc已經修復了這個問題對我來說。

來源:http://forums.macosxhints.com/showthread.php?t=17068