Existem duas formas principais:
- Expansão de parâmetro ativando
PROMPT_SUBST
- O
psvar
array
1. Expansão de parâmetro no prompt
Se PROMPT_SUBST
estiver ativado
setopt PROMPT_SUBST
o prompt é submetido a expansão de parâmetro, substituição de comandos e expansão aritmética antes de ser avaliado.
Dessa forma, a saída de um script pode ser incluída via substituição de comando. Por exemplo:
PROMPT='Look at this: $(python yourscript.py) >'
Se a saída contiver seqüências de escape ( %~
, %M
, %F{red}
etc.), elas serão avaliadas antes que o prompt seja impresso.
2. O array psvar
Um dos primeiros nove valores da matriz psvar
pode ser definido para a saída do script. Ele pode ser recuperado usando %Xv
, onde X
é um número entre 1 e 9 (o padrão é 1 se X
for omitido).
psvar[5]=$(python yourscript.py)
PROMPT='Look at this: %5v >'
Para atualizar o valor toda vez que o prompt é impresso, a função de gancho precmd
precisa ser definida:
precmd() {
psvar[5]=$(python yourscript.py)
}
Se já houver uma função precmd
, ou se mais de uma função for usada, é uma boa idéia usar add-zsh-hook
.
# load add-zsh-hook, need to be done only once
autoload -Uz add-zsh-hook
pyscript() {
psvar[5]=$(python yourscript.py)
}
add-zsh-hook precmd pyscript
Isso adiciona pycript
à lista de funções que precisam ser executadas antes de imprimir o prompt.