zsh AUTO_NAME_DIRS não funciona para determinados nomes de variáveis no OSX

1

Eu tenho um problema estranho com o meu zsh no meu OSX 10.8 (com oh-my-zsh, que eu acho que AUTO_NAME_DIRS definiu para mim).

Normalmente, se eu configurar uma variável de ambiente para algum caminho por export SOME_VAR=/some/path e alternar para esse caminho, terei ~SOME_VAR no prompt da linha de comando. Isso funciona bem no meu Ubuntu 13.04 com zsh 5.0.0.

No entanto, no meu OSX 10.8, ele funciona apenas para determinados nomes de variáveis. Por exemplo, alguns logs do meu terminal:

Last login: Fri Jul 26 10:22:15 on ttys000
sji@MacBook-Air:~% cd dev/test
sji@MacBook-Air:~/dev/test% export QEPY_PATH='pwd'
sji@MacBook-Air:~/dev/test% export AEPY_PATH='pwd'
sji@MacBook-Air:~/dev/test% export EEPY_PATH='pwd'
sji@MacBook-Air:~/dev/test% export AAAAEPY_PATH='pwd'
sji@MacBook-Air:~/dev/test% export AAAAEPY_PTH='pwd' 
sji@MacBook-Air:~/dev/test% export AAAAEPY_PBTH='pwd'
sji@MacBook-Air:~/dev/test% export AAAAEPY_PDTH='pwd'
sji@MacBook-Air:~/dev/test% export AAAAEPY_PDDH='pwd'
sji@MacBook-Air:~/dev/test% export AAAAEPY_PDIO='pwd'
sji@MacBook-Air:~/dev/test% export AAAAEPY_PAT='pwd' 
sji@MacBook-Air:~/dev/test% export AEPY_PAT='pwd' 
sji@MacBook-Air:~AEPY_PAT%

Todos menos o último não funcionou para mim. No começo, eu pensei que é porque o zsh no OSX é muito antigo. Mas o problema ainda persiste depois que eu atualizei para 5.0.2 através do MacPorts.

Eu lutei por algum tempo, mas ainda não consegui encontrar o padrão de quais nomes de variáveis são aceitáveis e quais não são.

Alguém tem algumas ideias? Obrigado.

    
por Jimmy Ji 26.07.2013 / 16:56

2 respostas

3

A expansão %~ é usada para tentar encontrar a maneira mais concisa de representar sua localização, já que o espaço pronto é precioso e não faz sentido dizer mais do que o necessário.

Assim, em zshexpn(1) , a seção Diretórios nomeados estáticos explica como a maneira mais curta de se referir ao diretório é usada e as regras para quebrar os laços (favorecendo os diretórios nomeados).

Como /dev/test tem 9 caracteres e ~ é 1 caractere, o nome da variável pode ter no máximo 8 caracteres para as regras favorecerem o uso da variável.

    
por 27.07.2013 / 00:31
0

Estou mais surpreso que ~AEPY_PAT seja imediatamente mostrado no prompt. No meu entender, você precisou usar a expansão de argumentos uma vez nos diretórios nomeados (com : ~name , que não faz nada além da expansão do argumento, mas obviamente também acontece com, por exemplo, cd ~name ) antes do primeiro uso.

Isto está no Linux com o zsh 5.0.2:

~/temp> export foo='pwd'
~/temp> : ~foo
:~foo>

Somente após : ~foo o diretório nomeado aparecer no prompt.

Suponho que você usou ~AEPY_PAT antes dessa sessão (por exemplo, em seus arquivos rc) e é por isso que isso está funcionando diretamente, mas não para outros nomes.

    
por 26.07.2013 / 17:07