Ich bin neu in Git und versuche, den aktuellen Git-Zweig zu meiner bereits vorhandenen Eingabeaufforderung hinzuzufügen, die wie folgt definiert ist:
RESET="\[\017\]"
NORMAL="\[\033[0m\]"
RED="\[\033[31;1m\]"
YELLOW="\[\033[33;1m\]"
WHITE="\[\033[37;1m\]"
SMILEY="${WHITE}:)${NORMAL}"
FROWNY="${RED}:(${NORMAL}"
SELECT="if [ \$? = 0 ]; then echo \"${SMILEY}\"; else echo \"${FROWNY}\"; fi"
export PS1="${RESET}${YELLOW}\u@\h${NORMAL} \`${SELECT}\` ${YELLOW}\w $(__git_ps1) >${NORMAL} "
Ich habe es versucht (indem ich meine .bashrc
Datei erneut bezogen habe) und es schien zu funktionieren, aber dann bin ich in einen anderen Zweig gegangen und es wurde nicht aktualisiert. Wie kann ich sicherstellen, dass das $(__git_ps1)
nicht zwischengespeichert ist?
:)
und:(
in Ihrer Eingabeaufforderung abhängig davon, ob der letzte Befehl fehlgeschlagen ist :)Antworten:
Sie benötigen einen Backslash auf dem,
$
damit es nicht sofort erweitert wird. (Vergleiche mit dem`...`
, was eine andere Schreibweise ist$(...)
.)export PS1="${RESET}${YELLOW}\u@\h${NORMAL} \`${SELECT}\` ${YELLOW}\w \$(__git_ps1) >${NORMAL} "
Ich würde @MikeSep in Bezug auf die Verwendung von einfachen Anführungszeichen zustimmen, aber es ist tatsächlich ein bisschen optimaler, die Farben und dergleichen sofort ersetzen zu lassen. Nicht notwendig, nur etwas besser. Das heißt, es ist einfacher zu verstehen, was los ist, wenn Sie die einfachen Anführungszeichen verwenden.
quelle
screen
usw.), sollten Sie auch die Verwendungtput
von hartcodierten Farb-Escapezeichen in Betracht ziehen .${SELECT}
eine zeigt, dass eine rekursive Auswertung durchgeführt wird. Vielleicht ist es nur für Befehle? Im Allgemeinen verwende ich stattdessen eine PS1-Funktion, weil es einfacher ist, herauszufinden, was los ist.$(__git_ps1)
, wird es nicht ausgewertet. Wenn ich das Gleiche auf dem iMac mache, wird es auch ohne das \ ausgewertet. Irgendeine Idee, wie das passieren kann?Ihre
PS1
Zeichenfolge wird wahrscheinlich ausgewertet, bevor sie gespeichert wird. Sie möchten jedoch, dass der__git_ps1
Befehl jedes Mal ausgeführt wird, wenn Sie eine Eingabeaufforderung erhalten. Ich würde empfehlen, einfache Anführungszeichen anstelle von doppelten Anführungszeichen für Ihreexport PS1='${RESET}...'
Zeile zu verwenden.quelle