在相对于主脚本的目录中调用脚本

萨吉布·艾哈迈德

目前,我正在使用一个 shell 脚本并制作一个系统,我在其中编写一个 shell 脚本,main.sh并且在同一个目录中有一个包含其他 shell 脚本的目录。结构是:

root_directory
|___scripts
|   |___script1.sh
|   |___script2.sh
|   |___script3.sh
|
|___main.sh

现在main.sh是基本文件。在此,main.sh我将脚本称为

bash ./scripts/script1.sh
bash ./scripts/script2.sh

等等。
当我main.shroot_directory目录运行文件时,一切正常但是我想全局安装整个系统,因为我可以main.sh从任何地方运行文件并且它可以找到scripts子文件夹。

如果有任何疑问,请随时发表评论。

点心

您可以通过运行获取脚本文件的目录

echo "${0%/*}"  # or
dirname "$0"

在脚本中,所以只需将行更改为

bash "${0%/*}/scripts/script1.sh"          # or respectively
bash "$(dirname "$0")/scripts/script1.sh"

或定义一个变量,例如

script_dir="${0%/*}/scripts"          # or respectively
script_dir="$(dirname "$0")/scripts"

并将其用于路径:

bash "$script_dir"/script1.sh

在脚本中,$0根据您的调用方式,以绝对或相对形式保存脚本文件的路径。dirname只是提取目录名称,这是root_directory您的情况的路径使用bashParameter Expansion可以做同样的事情${0%/*}简单地删除最后一个斜杠中的所有内容/,即文件名。对于这两种方式,路径仍然是绝对路径或相对路径。

在通过符号链接执行时dirname获取当前脚本的路径找到了解决方案• U&L,如果您觉得这个答案有用,请为这个答案点赞(也;)。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python请求相对于脚本目录的目录

构建Python项目以允许脚本导入相对于项目根目录的本地包

当前PHP脚本相对于文档根目录的路径

gnuplot脚本:使用相对于文件而不是执行目录的路径?

相对于另一个用户的主目录执行脚本

如何使用与FindBin等效的Raku加载相对于Raku中脚本的模块

如何在Java脚本中相对于其父元素获取选定的文本开始设置?

如何使相对于js文件目录的ajax调用URL

elisp-获取相对于脚本的文件路径

在Perl中获取相对于主目录的路径

相对于 ASP.NET 中的根目录

Jenkins Pipeline / Groovy:相对于当前脚本加载脚本

QMessageBox 相对于主窗口居中

相对于目录的“查找”输出

如何在相对于目标目录而不是工作目录的zip文件中创建目录

相对于正在运行的脚本路径的sys.path.append模块

如何在测试中正确设置相对于正在运行的脚本的路径?

相对于Python中的父目录设置子目录的文件的工作路径

在 cmd 批处理脚本递归循环中,获取相对于脚本文件的匹配文件路径

相对于基本目录缩短目录名称

朱莉娅:在相对于脚本位置的位置中创建一个新的文件夹和文件

我可以在 Powershell 的 PATH 中包含相对于当前目录的文件夹吗?

在Webpack中建立相对于项目根目录的绝对路径

在Linux CLI中以相对于当前目录的路径递归列出文件

相对于Node.JS中的应用程序根目录引用文件的正确方法

如何在C中相对于给定目录检索文件路径

如何使这个div相对于主容器的位置

Angular:如何在RouteGuard中相对于目标路由调用router.navigate()?

Matlab:访问相对于工作目录的文件