Ottenere la function in PS1 (Zsh)?

Questo funziona in bash ( parse_git_branch è una function definita)

 export PS1="\$(parse_git_branch)" 

Ma non riesco a capire l'equivalente in zsh .

Nota: Se lo faccio

 PROMPT="$(parse_git_branch)" 

Sembra che funziona, ma in realtà è in esecuzione il command quando ho impostato il prompt, che non è il punto.

Devi includere

 setopt PROMPT_SUBST 

nel tuo .zshrc , l' man zshall spiega nella sezione PROMPT EXPANSION :

Se l'opzione PROMPT_SUBST è impostata, la string di prompt viene sottoposta per l'espansione del parametro, alla sostituzione di command e all'espansione aritmetica.

In realtà il tuo problema non era solo impostare PROMPT_SUBST : si utilizza doppie virgolette nel tuo script per costringere la valutazione della function quando si impostano le variables PROMPT . Vorresti solo valutare quando il prompt viene calcolato ovvero è necessario utilizzare le virgolette singole.

Come dice Akira, è necessario utilizzare la sottoscrizione rapida. Questo è il mio codice precoce (ancora in corso):

 setopt PROMPT_SUBST PROMPT='$(parse_git_branch)' 

o meglio

 setopt PROMPT_SUBST PROMPT='[$PR_MAGENTA%[email protected]$PR_GREEN%U%m%u$PR_NO_COLOR:$PR_RED%2c$PR_NO_COLOR]$(parse_git_branch) %(!.#.$)'