在shell脚本的第一行中,必须写#!/bin/bash吗?带着这个问题,我今天在百度上搜索了一下,
发现在一个贴子中讨论了这个问题,觉得各个跟贴者在回答这个问题时,都解释的很有道理,现摘记如下,以便学习。
---------------------------------------------------------------------------------------------
本人初学linux不久,发现在编写脚本的时候开头都有一行#!/bin/sh
我记得#是表示注释的,那么这一行应该是可以不写的吧?为什么又说“这条语句告诉操作系统用来解释脚本的程序位置。”呢?
---------------------------------------------------------------------------------------------
#!/bin/sh
表示本脚本由/bin/路径的sh程序来解释....
跟命令行下~
#/bin/sh Scriptname效果相同...
---------------------------------------------------------------------------------------------
但是#不是用来表示注释的吗?难道这里的#不是这个意思?
---------------------------------------------------------------------------------------------
不同的地方,#有不同的意思
就好比c++里面用“//”来注解
vb里面用“'”注解一样
dns里面用“;”来注解
shell的开头那个#不是用来注解的
---------------------------------------------------------------------------------------------
如果你要用给该脚本执行权限的话...第一行必须声明该脚本由什么来解释...
#的确表示注释.第一行的你只需要知道是声明解释程序的路径就好了 :)
假如第一行是别的东西.而你又给了x权限,执行的时候就会出错...
---------------------------------------------------------------------------------------------
说了半天忘记回答你的问题..
可以不写.执行时手工执行...
/bin/sh xxxx.sh
效果是一样的 ...
---------------------------------------------------------------------------------------------
如果不写也成,那就用你登陆的那个shell来解释执行.
---------------------------------------------------------------------------------------------
可以不写,但应该有良好的编程习惯
---------------------------------------------------------------------------------------------
#通常用作注释,但是#!放在一起就标志着这是一个shell script,其后的路径指出了用来解释这个script的程序。
如果一个script只是一些普通linux指令的堆砌。那么#!可以略去不写。但通常我们遇到的都不是这种情况。
如果这个script中包含一些自定义的程序组件,比如说函数,变量等,#!便需要标注。
应该是这样,嗯。
---------------------------------------------------------------------------------------------
发现在一个贴子中讨论了这个问题,觉得各个跟贴者在回答这个问题时,都解释的很有道理,现摘记如下,以便学习。
---------------------------------------------------------------------------------------------
本人初学linux不久,发现在编写脚本的时候开头都有一行#!/bin/sh
我记得#是表示注释的,那么这一行应该是可以不写的吧?为什么又说“这条语句告诉操作系统用来解释脚本的程序位置。”呢?
---------------------------------------------------------------------------------------------
#!/bin/sh
表示本脚本由/bin/路径的sh程序来解释....
跟命令行下~
#/bin/sh Scriptname效果相同...
---------------------------------------------------------------------------------------------
但是#不是用来表示注释的吗?难道这里的#不是这个意思?
---------------------------------------------------------------------------------------------
不同的地方,#有不同的意思
就好比c++里面用“//”来注解
vb里面用“'”注解一样
dns里面用“;”来注解
shell的开头那个#不是用来注解的
---------------------------------------------------------------------------------------------
如果你要用给该脚本执行权限的话...第一行必须声明该脚本由什么来解释...
#的确表示注释.第一行的你只需要知道是声明解释程序的路径就好了 :)
假如第一行是别的东西.而你又给了x权限,执行的时候就会出错...
---------------------------------------------------------------------------------------------
说了半天忘记回答你的问题..
可以不写.执行时手工执行...
/bin/sh xxxx.sh
效果是一样的 ...
---------------------------------------------------------------------------------------------
如果不写也成,那就用你登陆的那个shell来解释执行.
---------------------------------------------------------------------------------------------
可以不写,但应该有良好的编程习惯
---------------------------------------------------------------------------------------------
#通常用作注释,但是#!放在一起就标志着这是一个shell script,其后的路径指出了用来解释这个script的程序。
如果一个script只是一些普通linux指令的堆砌。那么#!可以略去不写。但通常我们遇到的都不是这种情况。
如果这个script中包含一些自定义的程序组件,比如说函数,变量等,#!便需要标注。
应该是这样,嗯。
---------------------------------------------------------------------------------------------