我有一个名为args.sh
的bash脚本。只是应该打印出从命令行传入的参数。
#!/bin/bash
echo "Argument passed in: $1"
我尝试了chmod +x args.sh
,但得到了 -bash: ./args: No such file or directory
。我在Mac上执行此操作。
如何通过调用./args
(不带.sh文件扩展名)来构建可执行文件来调用脚本?
非常感谢您的帮助。
答案 0 :(得分:1)
Linux / unix上的可执行文件没有扩展名。因此,如果您已将文件命名为“ args.sh”,则可执行文件为“ args.sh”。如果您想使用“ ./args”将其重命名为“ args”。
然后,内核通过查看文件开头的“魔术字符串”来弄清楚如何加载可执行文件。在这种情况下,魔术字符串是“#!”。 (也称为“ shebang”),它告诉内核在该行的其余部分使用可执行文件来运行此脚本(在您的情况下为“ / bin / bash”)。其他魔术字符串会告诉内核它是ELF格式或a.out格式的二进制文件,或者您拥有什么,以便内核知道如何加载它们,或者根本无法加载它们(例如,如果是RISC) / 6000可执行AIX)。