shell script 首行 #!/bin/bash 的问题
我在写一个shell script 时,第一行忘记加"!"了。(#/bin/bash)但是脚本也成功执行了。为什么??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我在写一个shell script 时,第一行忘记加"!"了。(#/bin/bash)但是脚本也成功执行了。为什么??
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
这个shell脚本的发展有关。可以参考so
http://stackoverflow.com/questions/8967902/why-do-you-need-to-put-bin-bash-at-the-beginning-of-a-script-file
如果你敲命令的时候显式指定用什么程序来执行脚本,比如ruby YOUR_SCRIPT,这时候就会用你指定的程序来执行。如果你修改脚本文件的权限为可执行,那么你只需要敲脚本文件名就可以了,但是由于你没有显式指定用来执行脚本的程序,所以需要在脚本文件的开头写一行提示,比如#!/usr/bin/ruby。如果这一行你没写,会用默认的shell执行,恰好默认的shell能执行你的script,所以成功了。
加上!表示为脚本指定执行脚本的解释器,不加!的话此行会被当做注释。
当用户登录的的时候会以指定的shell登录进来,也就是默认执行脚本的解释器,当执行脚本不指定解释器时使用默认shell,查看当前用户的shell可以这样:
或者直接查看/etc/passwd文件:
vagrant@pconep:~$ grep
whoami/etc/passwd
最后一列就是当前用户的shell。
更改shell可以使用
chsh
命令