Ich habe ein eingerichtet PROMPT_COMMAND, um den aktuellen Zweig anzuzeigen, während ich in einem Git-Repo bin.
Der relevante Teil meiner .bashrc ist:
export PS1=" \[\033[34m\]\$\[\033[0m\] "
export PROMPT_COMMAND="$HOME/bin/myprompt"
wo ~ / bin / myprompt ist:
#!/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
Es funktioniert größtenteils einwandfrei. Das einzige Problem ist, dass der Befehl manchmal über meine Eingabeaufforderung geschrieben wird, wenn ich mit den Pfeiltasten durch den Befehlsverlauf scrolle. Angenommen, die folgende Sitzung:
~ $ pwd
/Users/Adrian
~ $ cd sibilant
~/sibilant (master) $ pwd
/Users/Adrian/sibilant
~/sibilant (master) $
Dann drücke ich den Aufwärtspfeil, um durch den Befehlsverlauf zu scrollen. Jede Zeile zeigt das Ergebnis eines Pfeildrucks:
~/sibilant (master) $ pwd
~/sibilant (master) $ cd sibilant
~/spwd
Wie Sie sehen, wurde der Befehl beim letzten Drücken des Pfeils über meine Eingabeaufforderung geschrieben.
Hat jemand dies erlebt und / oder weiß, wie man es behebt?
mypromptPS1 zuweisen ? Ich erinnere mich, dass ich zuvor versucht habe, so etwas zu tun.