У меня есть в нижней части моего .zshrcзапуска .zshrc в автозагрузку Баш скрипт как функция
[[ -e $HOME/.myapp/myapp.sh ]] && source $HOME/.myapp/myapp.sh
myapp.sh нагрузки некоторые переменные среды из файла под названием script_properties
{ [[ -e $HOME/.myapp/script_properties ]] && source $HOME/.myapp/script_properties; } || {printf "Please run setup script to set build configuration defaults.\n" && exit; }
и затем проверяет каталог (lt_shell_functions_dir), где есть некоторые сценарии bash, которые я хочу загрузить как функции zsh. Моя надежда состоит в том, чтобы иметь возможность из командной строки сделать что-то вроде «ltbuild», которое является именем сценария bash, который я хочу запустить как функцию. Когда я запускаю «autoload ltbuild» из командной строки zsh, он загружает файл как функцию (потому что он находится в моем fpath), и я могу запустить его. Когда я пытаюсь загрузить это изнутри скрипта, который выполняется при запуске, так что мне не нужно вводить «autoload ltbuild», он не работает. Я ценю помощь!
if [[ -d $lt_shell_functions_dir ]]; then
fpath=($lt_shell_functions_dir $fpath)
for function_file in $lt_shell_functions_dir/*
do
autoload $function_file || printf "Autoloading $function_file failed\n"
done
unset function_file
else
printf "no $lt_shell_functions_dir exists.\n"
fi
Пример:
У меня есть файл с именем echome, который имеет в нем:
echo "I'm a file running as a function"
Когда я запустить оболочку:
[[email protected][ 3:06PM]:carl] echome
zsh: command not found: echome
[[email protected][ 3:06PM]:carl] autoload echome
[[email protected][ 3:07PM]:carl] echome
I'm a file running as a function