2

Я пытаюсь справиться с функциями автозагрузки в Zsh. Я добавил папку, в которой я храню свои функции (~/.zfuncs) в свой fpath, и добавил тестовую функцию

# ~/.zfuncs/myfunction
echo "Hello world!"

Это прекрасно работает, когда я автоматически загружаю его в моей консоли:

stephanie% autoload -Uz myfunction
stephanie% myfunction
Hello world!

Когда я пытаюсь запустить его в сценарии, это не работает:

#!/usr/bin/env zsh
# ~/scripts/test-myfunction.sh

autoload -Uz myfunction
myfunction

Запуск скрипта выдает ошибку:

stephanie% zsh ~/scripts/test-myfunction.sh
myfunction:5: myfunction: function definition file not found

Это работает, если я добавлю следующую строку в начало скрипта:

source ~/.zshrc

Что я пропускаю или делаю неправильно?

1 ответ1

1

Я понял это, с информацией из этого ответа. Мне нужно было добавить строку с моей папкой в fpath в моем файле .zshenv, а не в файле .zshrc, потому что когда это скрипт, это не интерактивная оболочка.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .