Shell提示自定义和cmd行为
我希望我的提示显示:
-
当前(绝对)工作目录,绿色和绿色
-
在一个新的线,美元符号和一个空的空间。
我在.profile
使用这一行
export PS1='\e[0;32m$(pwd)\n\e[m$ '
因此,当在例如Desktop
,我的提示如下所示:
但是,有时当按下向上箭头重新运行以前的命令时,在提示开始时会出现一个随机字符序列,除非我按Enter键,否则它似乎不会消失,例如
我从来没有点过cd cd Desktop
命令。 最奇怪的部分是退格甚至不会删除上面两个cd
命令中的第一个!
有什么建议?
您必须确保提示中的非打印字符位于转义方括号中,否则bash无法正确计算提示的大小。 我想我已经为你修好了:
PS1='\[\e[0;32m\]$PWD\n\[\e[m\]$ '
首先要非常感谢@Zanna指出正确的方法来解决这个问题。
为了更完整的答案,我扩展了解决方案,包括:
a)绿色的cwd
b)在新行中,git分支(如果有的话)呈黄色,如果分支是脏的则带有红色星形
要完成b,需要git感知提示
它就像~/.bashrc
的最后一行一样
export PS1='\[\e[0;32m\]$PWD\n\[\e[m\]\[\e[0;33m\]$git_branch\[\e[m\]\[$txtred\]$git_dirty\[$txtrst\]$ '
如果你在git分支上,现在希望扩展到这样的提示