Parece que a substituição do comando não é avaliada depois que o shell foi interrompido dessa maneira.
Você poderia contorná-lo usando o precmd hook:
precmd () {
MYPROMPT='>'
}
setopt PROMPT_SUBST
PROMPT='${MYPROMPT}'
precmd é executado antes de cada prompt. Observe que precmd não é executado novamente nos casos em que o prompt é apenas redesenhado sem executar uma linha de comando (como neste caso). Ele ainda funciona, pois o valor de MYPROMPT permanece mesmo sem executar precmd .
-
Você também pode ter várias funções
precmd. Você pode gerenciá-los com o móduloadd-zsh-hook:autoload -Uz add-zsh-hook myprompt_function () { MYPROMPT='>' } add-zsh-hook precmd myprompt_function setopt PROMPT_SUBST PROMPT='${MYPROMPT}' -
Você também pode usar a variável de matriz especial
psvar, cujos membros podem ser acessados com o prompt escape%vou%Nv, em queNé o índice da matriz a ser exibido:precmd () { psvar[3]='>' } PROMPT='%3v'