bash – 在与当前脚本相同的目录中运行脚本

前端之家收集整理的这篇文章主要介绍了bash – 在与当前脚本相同的目录中运行脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在同一个文件夹中有两个Bash脚本(由下载整个存储库的用户保存在某处):

> script.sh由用户运行
> helper.sh是必需的,由script.sh运行

这两个脚本应位于同一目录中.我需要第一个脚本来调用第二个脚本,但有两个问题:

>了解当前的工作目录对我来说没用,因为我不知道用户是如何执行第一个脚本的(可能是/usr/bin/script.sh,带有./script.sh,或者它可能与../Downloads/repo/scr/script.sh)
>在调用helper.sh之前,脚本script.sh将更改为其他目录.

我绝对可以通过在一个变量中存储the current directory来实现这一点,但是这个代码看起来很复杂,我认为这是一个非常常见和简单的任务.

有没有一种标准的方法可以在script.sh中可靠地调用helper.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

所以

  1. Knowing the current working directory is useless to me,because I don’t know how the user is executing the first script (could be with
    /usr/bin/script.sh,with ./script.sh,or it could be with
    ../Downloads/repo/scr/script.sh)

使用dirname“$0”将允许您跟踪原始路径.

  1. The script script.sh will be changing to a different directory before calling helper.sh.

同样,由于你有$0的路径,你可以回到它.

猜你在找的Bash相关文章