Единица пути Systemd с директивой DirectoryNotEmpty
запускает соответствующую службу только тогда, когда что-то изменяется в каталоге. Systemd внутри использует API inotify
для отслеживания изменений в каталоге. Systemd не использует таймер для периодического запуска службы, независимо от того, пуст каталог или нет. Это означает, что служба не запускается снова, пока каталог не станет пустым. Вместо этого служба должна обрабатывать все файлы в каталоге, обычно обрабатывая файлы и удаляя или перемещая их в какой-либо другой каталог. Например, если служба обрабатывает только один файл, и после этого в каталоге ничего не происходит, то служба больше никогда не вызывается.
"DirectoryWentFromEmptyToNonEmpty", возможно, было бы более подходящим названием для директивы DirectoryNotEmpty
, хотя мои тесты показывают, что служба запускается каждый раз, когда файл добавляется в каталог. (Это, в свою очередь, немного усложняет ситуацию, потому что, если процесс использования файла занимает много времени, у вас может быть несколько процессов, работающих параллельно, которые необходимо координировать.)
Если вы посмотрите на код oh -my -zsh , эта переменная ZSH_THEME
используется кодом инициализации oh -my -zsh для получения исходного -файл темы.
Итак, если вы хотите, чтобы тема менялась всякий раз, когда текущий рабочий каталог попадает в какой-либо каталог, вам нужно:
Что-то вроде:
load-omz-theme() {
# copied and improved from oh-my-zsh
if (( $# > 0 )) ZSH_THEME=$1
if [[ -n $ZSH_THEME ]]; then
if [[ -f $ZSH_CUSTOM/$ZSH_THEME.zsh-theme ]]; then
source "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme"
elif [[ -f $ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme ]]; then
source "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme"
else
source "$ZSH/themes/$ZSH_THEME.zsh-theme"
fi
fi
}
adapt-theme() {
local previous_theme=$ZSH_THEME
case $PWD in
($SUB*) ZSH_THEME=af-magic;;
(*) ZSH_THEME=robbyrussell;;
esac
[[ $ZSH_THEME = $previous_theme ]] || load-omz-theme
}
chpwd_functions+=(adapt-theme)
Кстати, [[ "$STR" =~.*"$SUB".* ]]
— это синтаксис bash, а не синтаксис zsh. В zsh
заключение переменных в регулярные выражения в кавычки не отключает в них операторы регулярных выражений.