导航到可执行的相对路径bash



所以我知道Linux中相对路径的基础。。。

  • /表示相对于当前文件夹的路径
  • /表示相对于父文件夹的路径

但是如果我想运行相对于父文件夹的可执行文件(./exeToRun(怎么办?我用三个点吗?

示例

文件结构

project
│   README.md
│   file001.txt    
│
└───folder1
│   │   exeToRun
│   │   file012.txt
│   │
│   └───subfolder1
│       │   myScript.py
│       │   file112.txt
│       │   ...
│   
└───folder2
│   file021.txt
│   file022.txt

如果我想打电话给/exeToRun可从myScript.py执行,相对而言,我认为语法为.../folder1/exeToRun。两个点是因为它是相对于父文件夹的,一个点是由于它是可执行文件。

现在我知道这是不正确的,但我正在寻找一些关于如何正确实现此功能的清晰信息。

您可以使用两个点(../exeToRun(;没有额外的";点,因为它是可执行的";,这只是一条平坦的道路。

./exeToRun的通常情况下;在"当前文件夹"中;,而不是关于可执行文件的内容。之所以需要它,是因为如果命令不包含显式路径(即至少一个"/"(,系统将在$PATH中的各种二进制目录(即/bin、/usr/bin等(中查找它;将CCD_ 5放在可执行文件名称之前通过显式地说";在当前目录中">

然而,当你像这样使用...时,它们是相对于进程的当前工作目录的,而当前工作目录不一定是你的脚本所在的目录。如果你将cd放入脚本的目录并使用./scriptname运行它,那么是的,它将是脚本的目录,但如果你在其他地方并按其路径运行脚本。。。然后脚本的工作目录将位于运行脚本时您所在的位置。

如果你想运行一个相对于脚本目录的可执行文件,你需要首先找到脚本的目录,这并不总是容易的(甚至是可能的(。参见";如何从脚本本身中获取Bash脚本的源目录"以及BashFAQ#28:如何确定脚本的位置?

相关内容

  • 没有找到相关文章

最新更新