我正在处理许多脚本,因此,我尝试将重复的任务放在不同的文件和脚本中,这些文件和脚本将按需包括在内。
没有bash,只有POSIX shell,解释器将是/ bin / sh,脚本可以在任何地方运行,不仅可以在他自己的文件夹中运行,还可以在任何位置运行,但是可以是相对的。
.
-- folder1
| \ main.sh
-- folder2
| \ incl1.sh
-- folder3
\ incl2.sh
main.sh:
THIS_FILE=$(readlink -f "${0}");
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放在同一文件夹中。 / p>
有什么想法吗?从技术上讲这可能吗?
谢谢!
答案 0 :(得分:0)
好吧,在我认为这一点后,我无法以我最初的方式解决此问题,因此我从另一个角度来解决这个问题:在每个系统中定义脚本的根路径变量为全局变量。
所以我导出这样的全局变量:
export SCRIPT_ROOT=path/to/root/scripts
它可以在不同的地方定义,例如配置文件。
然后在incl1中,我将这样输入行:
. "$SCRIPT_ROOT/folder3/incl2.sh";
$ SCRIPTS_ROOT可以在任何地方使用。
希望这对其他人有帮助。