Shell 脚本 - 知道包含的路径,然后包含另一个文件
Shell script - knowing the path of an include, then include another file
我想要什么?
我要处理很多脚本,所以我尝试将重复性任务放在不同的文件和脚本中,我将按需包含这些任务。
详情
NO bash,只是 POSIX shell,解释器将是 /bin/sh,脚本将是来自任何地方的 运行,而不仅仅是来自他自己的文件夹,包含也可以在任何地方,但可以是相对的。
文件结构:
.
-- folder1
| \ main.sh
-- folder2
| \ incl1.sh
-- folder3
\ incl2.sh
文件内容:
main.sh:
THIS_FILE=$(readlink -f "[=12=]");
BASEDIR=$(dirname "${THIS_FILE}");
. "${BASEDIR}/incl1/incl1.sh";
incl1.sh:
. pathThatIDontKnow/incl2.sh
incl2.sh,内容不相关,只需要包含在incl1.sh
更多详情:
问题出在 incl1 中,我无法在不知道当前路径的情况下包含 incl2,并且无法在 main.sh 上包含 incl2。
重要的是要注意,可以是一个新文件 main2.sh,它试图以相同的方式包含相同的文件,这个包含不是 main.sh 独有的,并且不需要在同一个文件夹中作为 main.sh.
有什么想法吗?这在技术上是可行的吗?
提前致谢!
好吧,稍微想了想,我觉得我一开始想的办法解决不了,所以我从另一个角度来解决这个问题:在每个系统中定义一个脚本'全局根路径变量。
所以我像这样导出一个全局变量:
export SCRIPT_ROOT=path/to/root/scripts
可以在不同的地方定义如profile.d.
然后在 incl1 中,我将像这样放置导入行:
. "$SCRIPT_ROOT/folder3/incl2.sh";
$SCRIPTS_ROOT 可以在任何地方使用。
我希望这对其他人有帮助。
我想要什么?
我要处理很多脚本,所以我尝试将重复性任务放在不同的文件和脚本中,我将按需包含这些任务。
详情
NO bash,只是 POSIX shell,解释器将是 /bin/sh,脚本将是来自任何地方的 运行,而不仅仅是来自他自己的文件夹,包含也可以在任何地方,但可以是相对的。
文件结构:
.
-- folder1
| \ main.sh
-- folder2
| \ incl1.sh
-- folder3
\ incl2.sh
文件内容:
main.sh:
THIS_FILE=$(readlink -f "[=12=]");
BASEDIR=$(dirname "${THIS_FILE}");
. "${BASEDIR}/incl1/incl1.sh";
incl1.sh:
. pathThatIDontKnow/incl2.sh
incl2.sh,内容不相关,只需要包含在incl1.sh
更多详情:
问题出在 incl1 中,我无法在不知道当前路径的情况下包含 incl2,并且无法在 main.sh 上包含 incl2。
重要的是要注意,可以是一个新文件 main2.sh,它试图以相同的方式包含相同的文件,这个包含不是 main.sh 独有的,并且不需要在同一个文件夹中作为 main.sh.
有什么想法吗?这在技术上是可行的吗?
提前致谢!
好吧,稍微想了想,我觉得我一开始想的办法解决不了,所以我从另一个角度来解决这个问题:在每个系统中定义一个脚本'全局根路径变量。
所以我像这样导出一个全局变量:
export SCRIPT_ROOT=path/to/root/scripts
可以在不同的地方定义如profile.d.
然后在 incl1 中,我将像这样放置导入行:
. "$SCRIPT_ROOT/folder3/incl2.sh";
$SCRIPTS_ROOT 可以在任何地方使用。
我希望这对其他人有帮助。