小编adr*_*usi的帖子

Bash $PROMPT_COMMAND 弄乱了滚动历史显示

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)

bash prompt

7
推荐指数
1
解决办法
3388
查看次数

标签 统计

bash ×1

prompt ×1