加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 22:57:38 所属栏目:安全 来源:网络整理
导读:例一 #!/bin/sh# purpose: print out current directory name and contentspwdls 例二 # purpose: print out current directory name and contents#!/bin/shpwdls 有什么区别 – 如果我把第一行作为注释(#),用#!/ bin / sh作为第二行,会发生什么? #!/ bin
例一

#!/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.您可以将脚本作为普通程序启动,脚本可以用awk或make(或任何已定义的)语法编写.

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

所以使用#!您可以确定脚本语言,并且您不需要知道其他用户使用您的脚本使用了哪些shell.在任何其他行#!将被解释为您的默认shell,通常只是注释行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读