Jestem nowy w git i próbuję dodać bieżącą gałąź git do mojego już istniejącego znaku zachęty, który jest zdefiniowany w następujący sposób:
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} "
Wypróbowałem to ( .bashrc
ponownie pozyskując plik) i wydawało się, że działa, ale potem przeszedłem na inną gałąź i nie zaktualizowałem się. Jak mogę się upewnić, że $(__git_ps1)
plik nie jest zapisany w pamięci podręcznej?
:)
i:(
w twoim monicie w zależności od tego, czy ostatnie polecenie zawiodło :)Odpowiedzi:
Potrzebujesz odwrotnego ukośnika,
$
aby nie był natychmiast rozwijany. (Porównaj z`...`
, który jest innym sposobem pisania$(...)
.)export PS1="${RESET}${YELLOW}\u@\h${NORMAL} \`${SELECT}\` ${YELLOW}\w \$(__git_ps1) >${NORMAL} "
Zgodziłbym się z @MikeSep na temat używania pojedynczych cudzysłowów, ale w rzeczywistości nieco bardziej optymalne jest natychmiastowe zastąpienie kolorów i tym podobnych. Nie jest to konieczne, tylko trochę lepiej. Powiedział, że jest łatwiejszy do zrozumienia tego, co się dzieje, jeśli używasz apostrofów.
źródło
screen
, itp.), Możesz chcieć przyjrzeć się używaniutput
zamiast zakodowanych na stałe kolorów ucieczki.${SELECT}
jeden pokazuje, że ocena rekurencyjna jest wykonywana. Może to tylko dla poleceń? Generalnie używam funkcji PS1, ponieważ łatwiej jest dowiedzieć się, co się dzieje.$(__git_ps1)
, nie zostanie on oceniony. Jeśli zrobię to samo na komputerze iMac, zostanie on oceniony nawet bez \. Masz jakiś pomysł, jak to się może stać?Twój
PS1
ciąg jest prawdopodobnie oceniany, zanim zostanie zapisany, ale naprawdę chcesz, aby__git_ps1
polecenie było uruchamiane za każdym razem, gdy pojawi się wiersz polecenia. Zalecam używanie pojedynczych cudzysłowów zamiast podwójnych cudzysłowów wexport PS1='${RESET}...'
wierszu.źródło