2012-03-06 90 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