gpt4 book ai didi

shell - 类似注释的 #!/bin/sh 行之前和/或之后的注释 (#) 行的效果

转载 作者:行者123 更新时间:2023-12-01 22:41:34 25 4
gpt4 key购买 nike

示例一

#!/bin/sh
# purpose: print out current directory name and contents
pwd
ls

示例二

# purpose: print out current directory name and contents
#!/bin/sh
pwd
ls

有什么区别 - 如果我将第一行作为注释(#),将 #!/bin/sh 作为第二行,会发生什么?

#!/bin/sh 的含义是什么?

最佳答案

通常,shell 脚本由/etc/passwd 文件中定义的默认 shell 运行。但您可以显式定义一个可以运行脚本的程序。

Unices 使用通用方法来确定运行特定脚本所需的程序 (man execve(2) )。如果脚本设置了正确的执行权限,并且在脚本中第一行以 #! 字符开头,则它将由后面定义的程序运行。

例如,如果第一行是 #!/usr/bin/awk -f 那么文件的其余部分将被传递给 awk 程序(所以它必须使用 awk 语法)。或者,如果 Makefile 以#!/usr/bin/make -f 开头,则文件的其余部分将传递给 make。您可以将脚本作为普通程序启动,并且可以使用 awkmake(或任何定义的)语法编写脚本。

如果execve没有找到#!作为文件的前两个字符,它将被视为普通脚本文件并按原样运行。

因此使用 #! 您可以确定脚本语言,并且您不需要知道使用您的脚本的其他用户使用什么 shell。在任何其他行中 #! 将被解释为您的默认 shell,通常只是一个注释行。

关于shell - 类似注释的 #!/bin/sh 行之前和/或之后的注释 (#) 行的效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16516840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com