导航到可执行文件的相对路径 bash
Navigate to a executable relative path bash
所以我了解了Linux中相对路径的基础...
- ./ 表示相对于 当前文件夹的路径
- ../ 表示相对于 父文件夹
的路径
但是如果我想 运行 相对于父文件夹的可执行文件 (./exeToRun) 怎么办?我使用三个点吗?
例子
文件结构
project
│ README.md
│ file001.txt
│
└───folder1
│ │ exeToRun
│ │ file012.txt
│ │
│ └───subfolder1
│ │ myScript.py
│ │ file112.txt
│ │ ...
│
└───folder2
│ file021.txt
│ file022.txt
如果我想从 myScript.py 调用 ./exeToRun 可执行文件,相对而言,我会假定语法为 .../folder1/exeToRun
。两个点是因为它是相对于父文件夹的,一个点是因为它是可执行文件。
现在我知道这是不正确的,但我正在寻找有关如何正确实现此功能的一些说明。
您将使用两个点 (../exeToRun
);没有额外的“点,因为它是可执行文件”,这只是一条普通路径。
在 ./exeToRun
的通常情况下,单点仅表示“在当前文件夹中”,与文件是否可执行无关。需要它的原因是因为如果命令不包含显式路径(即至少一个“/”),系统将在 $PATH
的各种二进制文件目录中查找它(即 /bin,/usr/bin, 等等);将 ./
放在可执行文件名称之前,通过明确地说“在当前目录中...”来覆盖它。
但是,当您像这样使用 .
和 ..
时,它们是相对于进程的当前工作目录的,这不一定是您的脚本所在的目录。如果您 cd
进入脚本的目录并 运行 它与 ./scriptname
,然后是的它将是脚本的目录,但如果你在其他地方并且 运行 脚本的路径...然后脚本的工作目录将是您 运行 脚本时碰巧所在的任何地方。
如果你想运行相对于脚本目录的可执行文件,你需要先找到脚本目录,这并不总是那么容易(甚至不可能) ).参见 "How can I get the source directory of a Bash script from within the script itself?" and BashFAQ #28: How do I determine the location of my script?
所以我了解了Linux中相对路径的基础...
- ./ 表示相对于 当前文件夹的路径
- ../ 表示相对于 父文件夹 的路径
但是如果我想 运行 相对于父文件夹的可执行文件 (./exeToRun) 怎么办?我使用三个点吗?
例子
文件结构
project
│ README.md
│ file001.txt
│
└───folder1
│ │ exeToRun
│ │ file012.txt
│ │
│ └───subfolder1
│ │ myScript.py
│ │ file112.txt
│ │ ...
│
└───folder2
│ file021.txt
│ file022.txt
如果我想从 myScript.py 调用 ./exeToRun 可执行文件,相对而言,我会假定语法为 .../folder1/exeToRun
。两个点是因为它是相对于父文件夹的,一个点是因为它是可执行文件。
现在我知道这是不正确的,但我正在寻找有关如何正确实现此功能的一些说明。
您将使用两个点 (../exeToRun
);没有额外的“点,因为它是可执行文件”,这只是一条普通路径。
在 ./exeToRun
的通常情况下,单点仅表示“在当前文件夹中”,与文件是否可执行无关。需要它的原因是因为如果命令不包含显式路径(即至少一个“/”),系统将在 $PATH
的各种二进制文件目录中查找它(即 /bin,/usr/bin, 等等);将 ./
放在可执行文件名称之前,通过明确地说“在当前目录中...”来覆盖它。
但是,当您像这样使用 .
和 ..
时,它们是相对于进程的当前工作目录的,这不一定是您的脚本所在的目录。如果您 cd
进入脚本的目录并 运行 它与 ./scriptname
,然后是的它将是脚本的目录,但如果你在其他地方并且 运行 脚本的路径...然后脚本的工作目录将是您 运行 脚本时碰巧所在的任何地方。
如果你想运行相对于脚本目录的可执行文件,你需要先找到脚本目录,这并不总是那么容易(甚至不可能) ).参见 "How can I get the source directory of a Bash script from within the script itself?" and BashFAQ #28: How do I determine the location of my script?