我的 .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),其中有一些我想作为 zsh 函数加载的 bash 脚本。我希望能够从命令提示符执行类似“ltbuild”的操作,这是我想作为函数运行的 bash 脚本的名称。当我从 zsh 命令提示符运行“autoload ltbuild”时,它会将文件作为函数加载(因为它在我的 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"
当我启动外壳时:
[carl@desktop[ 3:06PM]:carl] echome
zsh: command not found: echome
[carl@desktop[ 3:06PM]:carl] autoload echome
[carl@desktop[ 3:07PM]:carl] echome
I'm a file running as a function