Условный исходный код скрипта в zsh

#zsh #oh-my-zsh

#zsh #oh-my-zsh

Вопрос:

В настоящее время я создаю сценарий инициализации в моем .zshrc . К сожалению, это вносит некоторые изменения в мою среду, и $PATH я не хочу, если я не нахожусь в некоторых определенных каталогах.

Конечно, я мог бы сравнить выходные pwd данные с текущим каталогом, но я хотел бы указать, нахожусь ли я в определенном каталоге или в одном из его подкаталогов на любом уровне.

И, вероятно, существует совершенно другое решение моей проблемы?

Комментарии:

1. Итак, вы хотите, чтобы эти изменения присутствовали только в некоторых окнах терминала, а не в других? Потому что вы всегда можете изменить каталог. Запустите скрипт, который инициирует это (включая изменение приглашения на предупреждение).

Ответ №1:

Использование дочернего процесса только для запуска pwd является излишним. Вы обнаружите, что ваш текущий каталог всегда хранится в переменной PWD . Эта переменная поддерживается zsh автоматически.

Вы можете узнать, находится ли ваш рабочий каталог в определенном каталоге или ниже dir него, с помощью

 if [[ $PWD:A == $dir:A || $PWD:A == $dir:A/** ]]
then
  # I am in $dir or below it
  ...
fi
  

:A Заботится о случаях, когда один из компонентов пути, участвующих в сравнении, оказывается символической ссылкой. Я не уверен, понадобится ли вам это PWD , но это не повредит его использованию.