我有两个Bash脚本在同一个文件夹中(由下载整个代码库的用户保存在某个地方):
script.sh
由用户运行helper.sh
被script.sh
所需并运行
这两个脚本应该在同一个目录下。我需要第一个脚本调用第二个脚本,但是有两个问题:
- 知道当前工作目录对我来说没有用,因为我不知道用户如何执行第一个脚本(可以使用
/usr/bin/script.sh
,使用./script.sh
,或者可以使用../Downloads/repo/scr/script.sh
) - 在调用
helper.sh
之前,脚本script.sh
将更改到另一个目录。
我肯定可以编写Bash代码来存储当前目录变量,但是对于我想象中的一个非常普遍和简单的任务来说,那段代码似乎过于复杂。
有没有一种标准的方法可以从script.sh
内部可靠地调用helper.sh
?并且能在任何支持Bash的操作系统上运行?
$0
可能无法按预期工作。对于bash,有一个名为BASH_SOURCE
的替代方法。 - Alex Che${BASH_SOURCE%/*}
时,手动执行时可以正常工作,但是当通过cron启动时失败了。我将其更改为$(dirname "$0")
,现在一切都正常工作了。 - AndreKR/bin/sh
- 显然在 Ubuntu 上是dash
。 - AndreKR