Você precisa ativar a opção AUTO_NAME_DIRS na sua configuração Zsh
setopt autonamedirs
tem que acontecer antes de você definir PROJ .
Alternativamente, se você não precisa de PROJ para nada além de mudar (e exibir) os caminhos em Zsh , você pode definir
hash -d PROJ=$HOME/project
Explicação:
O recurso que você está usando é chamado de "Diretórios nomeados estáticos". Os diretórios geralmente chamados precisam ser chamados com um ~ seguido pelo nome de um parâmetro do shell cujo valor começa com / , PROJ no seu caso.
Se CDABLE_VARS estiver habilitado (o que Oh-My-Zsh faz por padrão), o ~ não é realmente necessário. É por isso que você pode usar PROJ/project_name em vez de ~PROJ/project_name . (mas falharia, se houvesse um diretório com o nome real PROJ ).
Como Oh-My-Zsh também ativa AUTO_CD você nem precisa usar cd . Se um comando não puder ser executado e corresponder ao nome de um diretório, Zsh irá cd para esse diretório.
Com todos os diretórios nomeados, as pesquisas podem acontecer em duas direções
- um determinado nome aponta para um diretório (por exemplo, um parâmetro contém um caminho que começa com
/)? - o diretório atual tem um nome?
Enquanto o primeiro tipo de pesquisa ocorre automaticamente quando um argumento começa com ~ (ou, em alguns casos, habilitado CDABLE_VARS mesmo sem), o segundo tipo (que é usado para o prompt) requer que o diretório seja listado na tabela de hash do diretório ( hash -d para uma listagem dessa tabela). Em um recém-iniciado Zsh , esta tabela de hash é usualmente vazia. Em seguida, ele será preenchido com dados adquiridos ao fazer ~ de expansões.
No seu shell original PROJ foi expandido com êxito para $HOME/projects e, portanto, a tabela hash do diretório agora contém PROJ=$HOME/projects (onde $HOME é substituído pelo caminho do diretório inicial real). Zsh agora pode procurar por seu prompt. Quando você inicia o tmux, um novo shell é iniciado e a tabela de hash do diretório fica vazia novamente, portanto, o nome não é substituído no prompt.
Com AUTO_NAME_DIRS , uma entrada na tabela de hash de diretório é criada imediatamente quando um parâmetro é definido como um valor que começa com / (ou é removido se o novo valor não começar com / ). Você também pode adicionar manualmente à tabela de hash do diretório com hash -d NAME=PATH .