Ich habe die folgende Eingabeaufforderung in Bash, die den aktuellen Git-Zweig anzeigt:
PS1+="$(git_prompt)" #git_prompt is a function in my .bashrc
Dies funktioniert, wenn ich die .bashrc-Quelle beziehe, aber nicht, wenn ich den Zweig ändere. Daher wird die PS1-Variable nur ausgewertet, wenn ich die .bashrc-Quelle beziehe. Sie sollte jedoch jedes Mal ausgewertet werden, wenn eine neue Eingabeaufforderung angezeigt wird. Wie kann dies mit Bash 4.3 erreicht werden?
bash: command substitution: line 1: syntax error near unexpected token
) 'bash: Befehlsersetzung: Zeile 1:git_prompt)'
oldPS1="$PS1"
) und versuchen Sie dann:PS1='$(git_prompt) '
Ich habe es jetzt behoben, indem ich dies als Eingabeaufforderung verwendet habe
Bevor ich mehrere Strings zu einem PS1-String verkettete, schien es ein Problem zu geben. Der Trick besteht darin,
\
vor dem Ausführen des Befehls ein zu schreiben$(git_prompt)
.So
$(git_prompt)
bewertet werden , wenn die.bashrc
ausgewertet wird und\$(git_prompt)
wird jedes Mal ausgewertet, wenn eine neue Eingabeaufforderung angezeigt wirdquelle
"
um die Zeichenfolge. Verwenden\$(git_prompt)
ohne diese funktioniert nicht.versuchen Sie es mit einem einfachen Anführungszeichen in Ihrem ps1
Ich schlage auch meine psOne- Funktion vor
quelle
Willst du Wahnsinn sehen? So konstruiere ich meine Bash-Eingabeaufforderung:
Ich bin kein großer Fan von Farbe.
quelle