4
我想构建一个Bash提示符,它将同时具有我的git分支信息(使用git的bash完成中的__git_ps1)和一个小小的彩色笑脸来指示最近运行的命令是否成功。是否可以预先评估bash的PS1中的值?
SMILEY="${GREEN}:)${COLOR_NONE}"
FROWNY="${RED}:(${COLOR_NONE}"
STATUS_EMOTICON="if [ \$? = 0 ]; then echo \"${SMILEY}\"; else echo \"${FROWNY}\"; fi"
这里的提示行我想用:
的笑脸就是采用这种技术,我发现这里的SO创建
export PS1="[\t]${RED}[\[email protected]$MACHINE:${BOLD_CYAN}\w${GREEN}\$(__git_ps1 ' %s')${RED}]${COLOR_NONE} \`${STATUS_EMOTICON}\`\n$ "
不幸的是,它看起来像程序,由__git_ps1运行,覆盖$?
的值,并且每次运行false
后,每个表情符号都会显示绿色笑脸。
取出__git_ps1电话...
export PS1="[\t]${RED}[\[email protected]$MACHINE:${BOLD_CYAN}\w${RED}]${COLOR_NONE} \`${STATUS_EMOTICON}\`\n$ "
...使正确的表情工作。
所以我显然需要做的是运行__git_ps1
之前评估${STATUS_EMOTICON}
,但包括后__git_ps1
的输出的评估值。那可能吗?
这太好了!不过,我只有一个奇怪的问题。由于我的表情符号是颜色编码的,因此当我显示提示时,我看到周围有很多逃逸代码。我尝试了很多不同的策略来解决这个问题,但是我最终不得不回到使用PS1中原来的'\\'$ {STATUS_EMOTICON} \''部分。尽管如此,我改变了'STATUS_EMOTICON'来基于_PS1_cmd保存的退出代码进行评估,所以现在整个事情按我的意图工作。 – CoreDumpError 2013-03-28 18:35:51