Вам необходимо включить параметр AUTO_NAME_DIRS в вашей конфигурации Zsh
setopt autonamedirs
это должно произойти до того, как вы установите PROJ .
В качестве альтернативы, если вам не нужен PROJ для чего-либо, кроме переключения (и отображения) путей в Zsh, вы можете установить
hash -d PROJ=$HOME/project
Объяснение:
Используемая вами функция называется "Статические именованные каталоги". Обычно именованные каталоги нужно вызывать с ~ за которым следует имя параметра оболочки, значение которого начинается с / , PROJ в вашем случае.
Если CDABLE_VARS включен (что Oh-My-Zsh делает по умолчанию), ~ самом деле не требуется. Вот почему вы можете использовать PROJ/project_name вместо ~PROJ/project_name . (но он потерпит неудачу, если существует каталог с фактическим именем PROJ).
Так как Oh-My-Zsh также включает AUTO_CD вам даже не нужно использовать cd . Если команда не может быть выполнена и совпадает с именем каталога, Zsh будет cd в этот каталог.
Со всеми именованными каталогами поиск может происходить в двух направлениях
- Указанное имя указывает на каталог (например, содержит ли параметр путь, начинающийся с
/)?
- у текущего каталога есть имя?
В то время как первый вид поиска происходит автоматически, когда аргумент начинается с ~ (или в некоторых случаях и включает CDABLE_VARS даже без), второй тип (который используется для приглашения) требует, чтобы каталог был указан в хеш-таблице каталога (hash -d для распечатки этой таблицы). На недавно запущенном Zsh эта хеш-таблица обычно пуста. Затем он будет заполнен данными , полученными при выполнении ~ разложения.
В вашей исходной оболочке PROJ был успешно расширен до $HOME/projects поэтому хеш-таблица каталога теперь содержит PROJ=$HOME/projects (где $HOME заменяется вашим фактическим путем к домашнему каталогу). Zsh может теперь искать это для его подсказки. Когда вы запускаете tmux, запускается новая оболочка, и хеш-таблица каталога снова пуста, поэтому имя не заменяется в приглашении.
С AUTO_NAME_DIRS запись в хеш-таблице каталога создается сразу, когда для параметра задано значение, начинающееся с / (или удаляется, если новое значение не начинается с /). Вы также можете добавить вручную в хеш-таблицу каталога с помощью hash -d NAME=PATH .