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

智商安德烈亚斯

我在同一文件夹中有两个Bash脚本(由下载整个存储库的用户保存在某个位置):

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

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

  1. 知道当前的工作目录对我毫无用处,因为我不知道用户如何执行第一个脚本(可能与一起使用/usr/bin/script.sh,与一起使用./script.sh,也可能与一起使用../Downloads/repo/scr/script.sh
  2. script.sh调用之前,脚本将更改为其他目录helper.sh

我绝对可以通过将当前目录存储在变量中来一起破解Bash ,但是对于我认为这是一个非常普通和简单的任务,该代码似乎不必要地复杂。

有没有一种标准的方法可以可靠地helper.sh从内部进行呼叫script.sh并且可以在任何Bash支持的操作系统中工作吗?

fedorqui'停止伤害'

由于$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. 知道当前的工作目录对我毫无用处,因为我不知道用户如何执行第一个脚本(可能与一起使用/usr/bin/script.sh,与一起使用./script.sh,也可能与一起使用../Downloads/repo/scr/script.sh

使用dirname "$0"将使您可以跟踪原始路径。

  1. script.sh调用之前,脚本将更改为其他目录helper.sh

同样,由于您拥有路径,因此$0可以cd返回该路径

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用运行块将Matlab中的工作目录更改为当前脚本目录

来自分类Dev

使用运行块将Matlab中的工作目录更改为当前脚本目录

来自分类Dev

在与原始脚本相同的目录中以管理员身份运行PowerShell脚本

来自分类Dev

如何在Dart中获取当前脚本的目录?

来自分类Dev

在与调用Python模块或脚本相同的目录中运行文件

来自分类Dev

从Gradle中的构建目录运行脚本

来自分类Dev

引用与$ PATH中的脚本相同目录下的文件

来自分类Dev

在当前目录上运行脚本时如何省略“./”

来自分类Dev

在继续当前脚本的同时异步运行单独的 PowerShell 脚本

来自分类Dev

从任何目录运行脚本

来自分类Dev

如何获得Atom的脚本包以从脚本的当前工作目录运行脚本?

来自分类Dev

如何知道当前脚本所在的目录

来自分类Dev

在当前目录中运行Expect脚本

来自分类Dev

在当前目录中运行Expect脚本

来自分类Dev

在vim中,我可以结合使用“:w”和运行当前脚本吗?

来自分类Dev

VIM:如何检查当前脚本是否在宏中运行?

来自分类Dev

在当前shell中运行脚本,不带。在命令之前

来自分类Dev

如何在目录中递归运行脚本

来自分类常见问题

在Dockerfile中运行脚本

来自分类Dev

在Chrome中运行脚本

来自分类Dev

在 Dockerfile 中运行脚本

来自分类Dev

如何在Fish Shell中检索当前脚本的路径

来自分类Dev

如何在Python中获取当前脚本的代码?

来自分类Dev

bash-获取运行脚本的目录

来自分类Dev

在与Shell脚本相同的目录中创建文件夹

来自分类Dev

在与python脚本相同的目录中查找文件(txt文件)

来自分类Dev

使用php将文件上传到与脚本相同的目录

来自分类Dev

从批处理文件更改当前工作目录并运行脚本

来自分类Dev

如何从脚本内部找到Python运行脚本的目录?

Related 相关文章

  1. 1

    使用运行块将Matlab中的工作目录更改为当前脚本目录

  2. 2

    使用运行块将Matlab中的工作目录更改为当前脚本目录

  3. 3

    在与原始脚本相同的目录中以管理员身份运行PowerShell脚本

  4. 4

    如何在Dart中获取当前脚本的目录?

  5. 5

    在与调用Python模块或脚本相同的目录中运行文件

  6. 6

    从Gradle中的构建目录运行脚本

  7. 7

    引用与$ PATH中的脚本相同目录下的文件

  8. 8

    在当前目录上运行脚本时如何省略“./”

  9. 9

    在继续当前脚本的同时异步运行单独的 PowerShell 脚本

  10. 10

    从任何目录运行脚本

  11. 11

    如何获得Atom的脚本包以从脚本的当前工作目录运行脚本?

  12. 12

    如何知道当前脚本所在的目录

  13. 13

    在当前目录中运行Expect脚本

  14. 14

    在当前目录中运行Expect脚本

  15. 15

    在vim中,我可以结合使用“:w”和运行当前脚本吗?

  16. 16

    VIM:如何检查当前脚本是否在宏中运行?

  17. 17

    在当前shell中运行脚本,不带。在命令之前

  18. 18

    如何在目录中递归运行脚本

  19. 19

    在Dockerfile中运行脚本

  20. 20

    在Chrome中运行脚本

  21. 21

    在 Dockerfile 中运行脚本

  22. 22

    如何在Fish Shell中检索当前脚本的路径

  23. 23

    如何在Python中获取当前脚本的代码?

  24. 24

    bash-获取运行脚本的目录

  25. 25

    在与Shell脚本相同的目录中创建文件夹

  26. 26

    在与python脚本相同的目录中查找文件(txt文件)

  27. 27

    使用php将文件上传到与脚本相同的目录

  28. 28

    从批处理文件更改当前工作目录并运行脚本

  29. 29

    如何从脚本内部找到Python运行脚本的目录?

热门标签

归档