Zsh, dividindo a expansão de %~

Zsh, dividindo a expansão de %~

Estou perdendo o juízo com isso. Estou usando zsh e tentando simplesmente dividir a expansão do %3~personagem /. Isso funciona bem com a expansão de $(pwd)e $PWD- ambos também são strings semelhantes a caminhos.

Estou tentando dividir uma string usando o seguinte código ("${(@s./.)a}")- onde a é a=$(pwd)ou a=%3~. Novamente, este código funciona com pwd, mas não %3~.

Ainda sou um pouco novo em scripts de shell - mas, pelo que entendi, não deve haver discrepância. Não importa o que eu faça, não consigo %~dividir a expansão corretamente. Coisas que tentei:

# Ran from /home/me/code
a=%3~
b=$(pwd)
c=$PWD
d="/test/1/2"

e=$(echo "$a")
f="/$a"

echo $a # ~/code
echo $b # /home/me/code
echo $c # /home/me/code
echo $d # /test/1/2
echo $e # ~/code
echo $f # /~/code

("${(@s./.)a}") # ~/code
("${(@s./.)b}") # home me code
("${(@s./.)c}") # home me code
("${(@s./.)d}") # test 1 2
("${(@s./.)e}") # ~/code
("${(@s./.)f}") # /~/code

Na verdade, estou começando a pensar que zsh é intencionalmente inconsistente. Tenho certeza de que estou perdendo alguma coisa, no entanto. Eu também tentei ("${(ps./.)a}"), porque conforme li, deveria fazer o mesmo. Eu também tentei divisão baseada em IFS, configuração IFS="/". Novamente, funciona para strings normais - não funciona para %~.???

EDITAR: Para fins de integridade, isso está dentro de um arquivo .zsh-theme onde. Suponho que talvez isso importe? Tecnicamente, não sou eu quem o executa (está sendo executado por oh-my-zsh), então talvez algo estranho esteja acontecendo nesse nível.

Responder1

Você está tentando usar um escape de prompt fora do contexto onde os escapes de prompt são normalmente avaliados. então a variável contém a string %3~, você tenta dividir a string %3~resultante %3~e estou assumindo que ela será posteriormente atribuída a PS1/ PROMPTqual zsh então se expande %3~.

Se você quiser realizar expansões de parâmetros e ter a string %3~tratada como um prompt de escape você pode usar o sinalizador de expansão de parâmetros %da seguinte forma${(%)a}

informação relacionada