Bash脚本获取“没有这样的文件或目录”错误?

时间:2019-01-11 21:09:28

标签: bash macos shell terminal

我有一个名为args.sh的bash脚本。只是应该打印出从命令行传入的参数。

#!/bin/bash 
echo "Argument passed in: $1"

我尝试了chmod +x args.sh,但得到了 -bash: ./args: No such file or directory 。我在Mac上执行此操作。

如何通过调用./args(不带.sh文件扩展名)来构建可执行文件来调用脚本?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

Linux / unix上的可执行文件没有扩展名。因此,如果您已将文件命名为“ args.sh”,则可执行文件为“ args.sh”。如果您想使用“ ./args”将其重命名为“ args”。

然后,内核通过查看文件开头的“魔术字符串”来弄清楚如何加载可执行文件。在这种情况下,魔术字符串是“#!”。 (也称为“ shebang”),它告诉内核在该行的其余部分使用可执行文件来运行此脚本(在您的情况下为“ / bin / bash”)。其他魔术字符串会告诉内核它是ELF格式或a.out格式的二进制文件,或者您拥有什么,以便内核知道如何加载它们,或者根本无法加载它们(例如,如果是RISC) / 6000可执行AIX)。