所以我知道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:如何确定脚本的位置?