PROMPT_COMMAND当我在 git repo 中时,我设置了一个来显示当前分支。
我的 .bashrc 的相关部分是:
export PS1=" \[\033[34m\]\$\[\033[0m\] "
export PROMPT_COMMAND="$HOME/bin/myprompt"
Run Code Online (Sandbox Code Playgroud)
其中 ~/bin/myprompt 是:
#!/usr/bin/env ruby
green = "\033[32m"
bold = "\033[1m"
underline = "\033[4m"
reset = "\033[0m"
home_regex = Regexp.new "^#{ENV["HOME"]}"
Dir.chdir ENV["PWD"]
out =
underline + bold + green +
`pwd`.gsub(home_regex, "~").chomp +
reset
if `git log 2>&1 | grep ^fatal`.chomp == ""
out += "#{underline}#{green} (#{`git branch | grep ^\* | sed s/^..//g`.chomp})#{reset}"
end
print out
Run Code Online (Sandbox Code Playgroud)
在大多数情况下它工作正常,唯一的问题是当我使用箭头键滚动命令历史时,有时命令会写在我的提示上。假设有以下会话:
~ $ pwd
/Users/Adrian
~ $ cd …Run Code Online (Sandbox Code Playgroud)