`

#!/bin/bash

阅读更多

 

 

http://www.cnblogs.com/ghj1976/archive/2010/07/12/1775860.html

 

第一次学shell编程,看的文章中说shell程序必须以"#!/bin/sh"开始,也就认为是这样了。

虽然知道在shell中以"#"开始的语句都是注释,但也从没认为"#!/bin/sh"也是注释,就像对C语言程序必须有main函数一样毫无怀疑。

但前些时候又听说"#!/bin/sh"也是注释,可有可无,当时觉得真是一个失败,连基本的语法都分不清。

前几天借了一本书,才真正认识了"#!/bin/sh"。

shell编程是以"#"为注释,但对"#!/bin/sh"却不是。

"#!/bin/sh"是对shell的声明,说明你所用的是那种类型的shell及其路径所在。

如果没有声明,则脚本将在默认的shell中执行,默认shell是由用户所在的系统定义为执行shell脚本的shell。

比如:如果脚本被编写为在Korn Linux中运行,而默认运行shell脚本的为C shell csh,则上述脚本在执行过程中很可能失败。

所以建议大家就把"#!/bin/sh"当成C 语言的main函数一样,写shell必须有,以使shell程序更严密。

 

即: #!/bin/sh 是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径。

其实第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,我们可以用各种各样的解释器来写对应的脚本。

比如说/bin/csh脚本,/bin/perl脚本,/bin/awk脚本,/bin/sed脚本,甚至/bin/echo等等。

那我们真的能写一个/bin/echo的脚本文件吗?我们来试试,下面是一个例子:

代码:

#!/bin/echo –e

这只有一行的程序(实际上它也只能是一行,echo程序并不是被设计成像awk那样的编程语言,能写成源程序文件)命名为myecho,加上权限后执行它:
代码:

$ ./myecho "hi\a" ./myecho hi

如果你的echo支持-e选项并且你工作的环境还算安静,你在得到上面的结果的时候也应该听到清脆的终端响铃。但这种程序是毫无作用的。

 

参考资料:

终于明白#!bin/sh是什么意思了
http://blog.sina.com.cn/s/blog_4d32d0b40100fngc.html

分享到:
评论

相关推荐

    shell中第一行#!_bin_bash的作用

    _bin_bash”的作用详解 #### 一、引言 在Shell脚本编程中,我们经常会看到脚本的第一行是`#!/bin/bash`或`#!/bin/ksh`这样的语句。对于初学者来说,这行代码可能会显得有些神秘,但实际上它具有非常重要的意义。...

    BCM4322在CentOS 7驱动程序

    CentOS7.4下编译测试通过。改进了程序并增加了安装说明。 # cat README 1、以root身份执行如下语句.../bin/bash for M in lib80211 cfg80211 wl; do modprobe $M &>/dev/null done 这样,驱动就会开机启动啦!

    linux 一键启动 jar包 批处理脚本

    /bin/bash # 定义变量 JAR_FILE_PATH="/path/to/your/app.jar" # 定义函数 start() { ... } stop() { ... } restart() { ... } # 检查参数 case $1 in start) start ;; stop) stop ;; restart) restart ...

    linux上通过sh方式启动java jar程序并做为守护进程

    /bin/bash` 是一个shebang,指定该脚本使用bash解释器执行。 2. `JAR_FILE_PATH`变量存储了JAR文件的完整路径。 3. `MAIN_CLASS`变量定义了Java程序的主要类名,这是JAR文件的入口点。 4. 使用`nohup`命令启动Java...

    ubuntu如何运行.sh文件,.sh文件运行提示脚本异常

    ubuntu执行.sh文件,1 .sh文件是Ubuntu下可执行文件,首先需要确定它的权限是否是可执行的,2、 用vim打开sh文件,3、查看文件格式:4. 修改文件格式: 5. 保存退出: 6. 执行:./filename .../bin/bash

    ubuntu-编译时出现-bin-sh-1-pushd- not found.pdf

    /bin/bash`”,这样就可以确保该脚本始终使用bash来执行,而不是dash。 - 示例: ```bash #!/bin/bash pushd . # 其他脚本代码 popd ``` 2. **临时切换Shell**: - 如果只是某个Makefile或构建脚本中存在...

    dcsh:#!usrlocalbindcsh > #!binbash

    binbash" 暗示着一个脚本文件,它可能是用于Linux或Unix环境的shell脚本。在这个标题中,可以看到两个不同的shebang(#!)行,一个是`#!/usr/local/bin/dcsh`,另一个是`#!/bin/bash`。Shebang是用来指定脚本应该由...

    查看apk签名信息方法

    /bin/bash mkdir .temp_for_certificate cd .temp_for_certificate count=0 while [ -n “$1” ] do count=$[$count+1] echo “(#$count) “`basename “$1″`”:” echo “” path=`jar tf “$1” | grep RSA` #...

    linux mac VIM一键配置脚本(YCM可选) 不适用windows

    理论上适用于 Ubuntu,Fedora和RedHat以及CentOS等linux.../bin/bash echo 安装将花费一定时间,请耐心等待直到安装完成^_^ if which apt-get >/dev/null; then sudo apt-get install -y vim vim-gnome ctags xclip as

    Linux Crontab Shell脚本实现秒级定时任务的方法

    /bin/bash step=1 #间隔的秒数,不能大于60 for (( i = 0; i < 60; i=(i+step) )); do $(php '/home/www/php/crontab/crontab.php') sleep $step done exit 0 二、crontab -e 输入以下语句,然后:wq 保存退出 ...

    Linux(shell/bash)的脚本教程

    /bin/bash`或`#!/bin/sh`。这被称为Shebang行,用于指定执行此脚本所使用的解释器。 3. **编写脚本代码**:在Shebang行之后添加所需的脚本代码。 4. **赋予执行权限**:使用`chmod +x script.sh`命令赋予文件执行...

    bash脚本基础实例

    /bin/bash` 是一个称为“shebang”的行,告诉系统使用哪个解释器来执行脚本。`echo` 命令则用来打印后面的字符串。 ### 实例二:变量与运算 Bash支持变量存储和基本运算。例如,我们可以定义一个变量并进行加法...

    bash语言编程说明

    - **Bash 安装路径**:通常 Bash 被安装在 `/bin/bash`,但也可能在 `/sbin/`、`/usr/local/bin/`、`/usr/bin/` 等目录中。 #### 四、脚本的执行 - **直接执行**:首先赋予脚本执行权限 `chmod +x hello.sh`,然后...

    解决-BASH: /HOME/JAVA/JDK1.8.0_221/BIN/JAVA: 权限不够问题

    以上所述是小编给大家介绍的解决-BASH: /HOME/JAVA/JDK1.8.0_221/BIN/JAVA: 权限不够问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对软件开发网网站的支持! ...

    Bash 脚本编程基础,shell 脚本学习

    /bin/bash` 指定脚本使用的解释器为 `/bin/bash`。 - **注释**:`#` 后面的内容被视为注释。 - **输出文本**:使用 `echo` 命令输出字符串 `"Hello, World!"`。 ##### 2. 创建用户脚本 ```bash #!/bin/bash useradd...

    30分钟搞定BASH脚本编程.txt

    /bin/bash`行开头,这被称为shebang(井号加感叹号),用于指定解释器为bash。一个简单的“Hello World”脚本如下所示: ```bash #!/bin/bash echo "Hello World" ``` 执行脚本前,需确保脚本具有执行权限,可以通过...

    Linux bash练习小小的题

    /bin/bash echo -e "Your name is ==> $(whoami)" echo -e "The current directory is ==> $(pwd)" ``` 这里使用了`whoami`命令来显示当前用户的用户名,并用`pwd`命令显示当前工作目录。`echo -e`命令则用来打印带...

    人性化解析shell脚本,保证快速入门sh,bash,shell入门.pdf

    /bin/bash` 2. 脚本内容:包括变量、函数、循环、判断等语句 基本示例 创建一个名为ok.sh的文件,内容如下: ```bash #!/bin/bash echo "happy to study" echo "happy to study" > /home/happy ``` 然后,使用 `...

    一个非常好的Bash 教程

    /bin/bash` 或 `#!/bin/sh`,用于指定解释器路径。 - 要使脚本可执行,需使用 `chmod +x filename` 命令赋予脚本执行权限。 - 执行脚本时,可以通过 `./filename` 的方式直接运行。 - **注释**: - 在 Bash 脚本...

Global site tag (gtag.js) - Google Analytics