是否有类似的 bash 命令source
,但它只会为给定的 shell 获取一次文件?
例如:
source_cached foo.sh # runs as normal
source_cached foo.sh # would not load foo.sh a second time
由于 foo.sh 路径已经被获取,因此不会再次获取它。
答案1
你想要的叫做“包含守卫”。您可以在 Jonathan Leffler 的网站上看到有关 SO 的示例https://stackoverflow.com/a/7518684/6512983。
if [ -z "$B_SH_INCLUDED" ]
then
B_SH_INCLUDED=yes
...rest of original contents of b.sh
fi
本质上,您在包含的文件中定义了一个变量,但事先检查它是否存在,如果已经定义了,则提前返回。