我有一个文件:
/Users/danylo.volokh/test/test_bash_script.sh
内容很简单:
#!/usr/bin/env bash
echo "-- print from script"
我在文件夹“danylo.volokh”中
该命令运行良好:
Danilos-MacBook-Pro:~ danylo.volokh$ test/test_bash_script.sh
-- print from script
但如果我尝试使用绝对路径运行,我会收到错误:
Danilos-MacBook-Pro:~ danylo.volokh$ /test/test_bash_script.sh
-bash: /test/test_bash_script.sh: No such file or directory
我想从任何文件夹运行具有绝对路径的命令并执行脚本。
答案1
我想从任何文件夹运行具有绝对路径的命令并执行脚本。
如果我尝试使用绝对路径运行,我会收到错误:
/test/test_bash_script.sh
-bash: /test/test_bash_script.sh: No such file or directory
文件/test/test_bash_script.sh
不存在,因此无法执行。
绝对路径定义为从根目录()指定文件或目录的位置
/
。/test
不能是绝对路径,因为目录/test
不存在(它是您的主目录的子目录)。
您有两个选择:
使用正确的脚本绝对路径:
/Users/danylo.volokh/test/test_bash_script.sh
使用基于您的主目录的路径:
~/test/test_bash_script.sh
什么是绝对路径?
绝对路径定义为从根目录()指定文件或目录的位置
/
。
由于斜杠总是将名称组件分开,因此如果路径名以斜杠开头,则假定无名“ROOT”目录为路径名的开头。ROOT 目录没有名称。它是整个 Unix 文件系统树的根。
以斜杠开头的路径名称为绝对路径名,因为它总是从 ROOT 开始。
由于难以谈论没有名称的目录,我们通常(错误地)使用名称“/”(斜杠)表示 ROOT 目录。这是错误的,因为路径名的名称组件不能包含斜杠,并且斜杠会分隔名称组件。请注意,当我们使用“/”表示 ROOT 时,我们实际上指的是“斜杠左侧的无名 ROOT 目录”,而不是斜杠本身。
答案2
绝对路径是/Users/danylo.volokh/test/test_bash_script.sh
,而不是/test/test_bash_script.sh
。那么 Bash 就是正确的。
答案3
如果“这是您的完整绝对路径 /Users/danylo.volokh/test/test_bash_script.sh”,那么如果您在 Users 中,则执行路径将为“danylo.volokh/test/test_bash_script.sh”,否则如果您在 danylo.volokh 中,则执行路径将为“test/test_bash_script.sh”,否则如果您在测试中,则执行路径将为“./test_bash_script.sh”,否则如果您不知道自己身在何处,则执行路径将为“/Users/danylo.volokh/test/test_bash_script.sh”
这是为那些需要基本逻辑帮助的未来用户准备的,或者如果 op 仍然没有答案(那会很尴尬)
附言:这在 Linux 上应该可以完美运行,你可能需要对 Windows 进行一些修改