使用 Mercurial 存储库信息自动更新 BASH 提示

使用 Mercurial 存储库信息自动更新 BASH 提示

我已按照指示Steve Losh 概述为我的 bash 提示符添加颜色并进行格式化,但是提示符并没有更新。

我的export PS1线路看起来是这样的:

export PS1="\n\[$txtgrn\]\w\[$txtrst\]$(hg_in_repo)\[$txtylw\]$(hg_branch)\[$txtrst\]$(hg_dirty)\n\[$txtcyn\]\$\[$txtrst\] "

是的,所有这些$txtxxx都已定义。

一切都按预期工作,无论是在存储库内部还是外部,但我必须不断地source ~/.bash_profile获取更新提示。

我是不是漏掉了什么?有没有办法让它在每次执行命令时都更新,就像他在页面下方的屏幕截图中演示的那样?

我正在使用 Mac OSX 10.5 (Leopard),带有终端和/或 iTerm。

答案1

您需要转义美元符号,以便在发出提示之前不会评估命令替换:

export PS1="\n\[$txtgrn\]\w\[$txtrst\]\$(hg_in_repo)\[$txtylw\]\$(hg_branch)\[$txtrst\]\$(hg_dirty)\n\[$txtcyn\]\$\[$txtrst\] "

或者,如果您注意到该页面,他使用单引号,这也可以防止命令替换的扩展,直到发出提示符:

export PS1='\n\[$txtgrn\]\w\[$txtrst\]$(hg_in_repo)\[$txtylw\]$(hg_branch)\[$txtrst\]$(hg_dirty)\n\[$txtcyn\]\$\[$txtrst\] '

相关内容