我正在阅读一些shell脚本教程,并找到了以下示例程序:
#!/bin/sh
clear
echo "HELLO WORLD"
谁能告诉我#!/bin/sh
一开始评论的意义是什么?
我正在阅读一些shell脚本教程,并找到了以下示例程序:
#!/bin/sh
clear
echo "HELLO WORLD"
谁能告诉我#!/bin/sh
一开始评论的意义是什么?
Answers:
它称为shebang,它告诉父shell应该使用哪个解释器来执行脚本。
例如
#!/usr/bin/perl <--perl script'
#!/usr/bin/php <-- php script
#!/bin/false <--- do-nothing script, because false returns immediately anyways.
它作为注释实现,因此该行中的所有内容都不会与指定的解释器“相关”。例如,所有脚本语言都倾向于理解以开头的行#
是注释,并且会忽略该!/usr/bin/whatever
部分,否则该部分可能是该特定语言的语法错误。
exec()
在文件上调用系统调用。
#!/bin/sh
或#!/bin/bash
必须是脚本的第一行,因为如果您不在第一行使用它,那么系统会将该脚本中的所有命令视为不同的命令。如果第一行是#!/bin/sh
,它将把所有命令视为一个脚本,并显示此文件正在ps
命令中运行,而不是文件内部的命令。
./echo.sh
ps -ef |grep echo
trainee 3036 2717 0 16:24 pts/0 00:00:00 /bin/sh ./echo.sh
root 3042 2912 0 16:24 pts/1 00:00:00 grep --color=auto echo
ps
)和代码摘录(如)#!/bin/sh
。