我在同一文件夹中有两个Bash脚本(由下载整个存储库的用户保存在某个位置):
script.sh
由用户运行helper.sh
是必需的,并由 script.sh
这两个脚本应位于同一目录中。我需要第一个脚本来调用第二个脚本,但是有两个问题:
/usr/bin/script.sh
,与一起使用./script.sh
,也可能与一起使用../Downloads/repo/scr/script.sh
)script.sh
调用之前,脚本将更改为其他目录helper.sh
。我绝对可以通过将当前目录存储在变量中来一起破解Bash ,但是对于我认为这是一个非常普通和简单的任务,该代码似乎不必要地复杂。
有没有一种标准的方法可以可靠地helper.sh
从内部进行呼叫script.sh
?并且可以在任何Bash支持的操作系统中工作吗?
由于$0
保留了正在运行的脚本的完整路径,因此可以dirname
对它进行使用来获取脚本的路径:
#!/bin/bash
script_name=$0
script_full_path=$(dirname "$0")
echo "script_name: $script_name"
echo "full path: $script_full_path"
因此,例如,如果将其存储在其中,/tmp/a.sh
那么您将看到类似以下的输出:
$ /tmp/a.sh
script_name: /tmp/a.sh
full path: /tmp
所以
- 知道当前的工作目录对我毫无用处,因为我不知道用户如何执行第一个脚本(可能与一起使用
/usr/bin/script.sh
,与一起使用./script.sh
,也可能与一起使用../Downloads/repo/scr/script.sh
)
使用dirname "$0"
将使您可以跟踪原始路径。
script.sh
调用之前,脚本将更改为其他目录helper.sh
。
同样,由于您拥有路径,因此$0
可以cd
返回该路径。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句