2012-03-06 125 views
1

我定製我的bash提示符(我用的iTerm在OS X Lion中),並嘗試類似:Bash提示符無法識別變量

PS1='\n[\u]-> ' 

只是爲了簡單,但重裝我~/.bash_profile,我的提示後現在說:

\n[\u]-> 

而不是我期待的(一個新行,後面跟着我的用戶名)。

任何想法?

+1

嘗試'chsh',可能也適用於Mac。 – 0xC0000022L 2012-03-06 18:36:48

回答

2

如何調用shell?如果它是sh,或其他可能的方式,它不會被解釋。嘗試echo $0

+1

'echo $ SHELL'怎麼辦? ;)...沒關係,我明白了......'$ 0'是爲懶惰的人。 – 0xC0000022L 2012-03-06 18:31:31

+1

本週末我用zsh玩過,但是我只想用bash。我想這就是我的問題。當我運行'echo $ 0'時,它返回'-zsh'。 – Connor 2012-03-06 18:32:57

+0

@STATUS_ACCESS_DENIED其實,我測試過,他們給出了不同的結果。 '$ 0'是'sh','$ SHELL'是'/ bin/bash'。 – Kevin 2012-03-06 18:34:31

-1

嘗試用雙引號替換單引號,即PS1="\n[\u]-> "

+1

不,一旦設置了變量就沒有關係,並且在提示即將被寫入之前不會解釋轉義。 – Kevin 2012-03-06 18:32:26

1

注意提示中的單引號? Bash syntax不同地處理單引號和雙引號。使用雙引號允許shell擴展特殊字符。

另外,你有promptvars集?

+0

不是真的在這種情況下。這不是經典變量,而是「特殊」變量。在我嘗試之前,我認爲這是一樣的。 – 0xC0000022L 2012-03-06 18:30:52

+1

不可以,變量的設置與單或雙相同,在打印完成之前不會被解釋。 – Kevin 2012-03-06 18:33:17

+0

@Kevin我知道解釋發生在打印時間。但[根據這個](http://ss64.com/bash/syntax-prompt.html)和BASH手冊頁,提示符*會*通過報價擴展。 – 2012-03-06 18:41:37