首页 > shell script 首行 #!/bin/bash 的问题

shell script 首行 #!/bin/bash 的问题

我在写一个shell script 时,第一行忘记加"!"了。(#/bin/bash)但是脚本也成功执行了。为什么??


如果你敲命令的时候显式指定用什么程序来执行脚本,比如ruby YOUR_SCRIPT,这时候就会用你指定的程序来执行。如果你修改脚本文件的权限为可执行,那么你只需要敲脚本文件名就可以了,但是由于你没有显式指定用来执行脚本的程序,所以需要在脚本文件的开头写一行提示,比如#!/usr/bin/ruby。如果这一行你没写,会用默认的shell执行,恰好默认的shell能执行你的script,所以成功了。


加上!表示为脚本指定执行脚本的解释器,不加!的话此行会被当做注释。
当用户登录的的时候会以指定的shell登录进来,也就是默认执行脚本的解释器,当执行脚本不指定解释器时使用默认shell,查看当前用户的shell可以这样:

bashecho $SHELL

或者直接查看/etc/passwd文件:vagrant@pconep:~$ grepwhoami/etc/passwd
最后一列就是当前用户的shell。
更改shell可以使用chsh命令


这个shell脚本的发展有关。可以参考so
http://stackoverflow.com/questions/8967902/why-do-you-need-to-put-bin-bash-at-the-beginning-of-a-script-file

【热门文章】
【热门文章】