Bash脚本:#!/ bin / bash是什么意思?
在bash脚本中,第一行的#!/bin/bash
是什么意思?
更新 : #!/bin/bash
和#!/bin/sh
之间有区别吗?
这被称为shebang ,它在执行时告诉shell用什么程序来解释脚本。
在你的例子中,脚本是由bash shell来解释和运行的。
其他一些示例如下:
(来自维基百科)
#!/bin/sh — Execute the file using sh, the Bourne shell, or a compatible shell #!/bin/csh — Execute the file using csh, the C shell, or a compatible shell #!/usr/bin/perl -T — Execute using Perl with the option for taint checks #!/usr/bin/php — Execute the file using the PHP command line interpreter #!/usr/bin/python -O — Execute using Python with optimizations to code #!/usr/bin/ruby — Execute using Ruby
还有一些额外的东西,我可以从头顶上思考,比如:
#!/bin/ksh #!/bin/awk #!/bin/expect
例如,在一个带有bash文件的脚本中,你可以用bash语法编写你的代码; 而在一个期望shebang的脚本中,你可以用期望的语法编码,等等。
对更新部分的回应:
这取决于/bin/sh
实际上指向您系统上的内容。 通常它只是/bin/bash
的符号链接。 有时候可移植的脚本是用#!/bin/sh
编写的,只是为了表示它是一个shell脚本,但它使用了/bin/sh
引用的特定系统上的任何shell(可能指向/bin/bash
, /bin/ksh
或/bin/zsh
)
在bash脚本中,第一行的#!/ bin / bash是什么意思?
在Linux系统中,我们有解释我们的UNIX命令的shell。 现在在Unix系统中有一些shell。 其中有一个叫做bash的shell,它是非常常见的Linux,历史悠久。 这是Linux中的默认shell。
当你编写一个脚本(unix命令集合等)时,你可以select指定哪个shell可以使用。 一般来说,你可以通过使用Shebang (是的,这就是它的名字)指定哪个shell。
所以,如果你在你的脚本的顶部有#!/ bin / bash,那么你要告诉你的系统使用bash作为默认的shell。
现在回到第二个问题:#!/ bin / bash和#!/ bin / sh之间有区别吗?
答案是肯定的 当你告诉#!/ bin / bash时,你告诉你的环境/ os使用bash作为命令解释器。 这是硬编码的东西。
每个系统都有自己的shell,系统将用它来执行自己的系统脚本。 这个系统的shell可以根据操作系统的不同而变化(大部分时间是bash,最近Ubuntu使用短划线作为默认的系统shell)。 当你指定#!/ bin / sh时,系统将使用它的内部系统shell来解释你的shell脚本。
在我已经解释过这个主题的地方访问这个链接以获取更多信
希望这会消除你的困惑…祝你好运。
当脚本中的第一个字符是#!
那就是所谓的she </s> 。 如果你的文件以#!/path/to/something
那么标准就是运行something
并把文件的其余部分作为input传递给那个程序。
这就是说, #!/bin/bash
, #!/bin/sh
,甚至#!/bin/zsh
之间的区别在于bash,sh或者zsh程序是用来解释文件的其余部分的。 bash
和sh
只是传统的不同的程序。 在一些Linux系统上,它们是同一个程序的两个副本。 在其他的Linux系统上, sh
是dash
的链接,而在传统的Unix系统(Solaris,Irix等)上, bash
通常是与sh
完全不同的程序。
当然,其余的线路不一定要以sh结尾。 它也可以是#!/usr/bin/python
, #!/usr/bin/perl
,甚至#!/usr/local/bin/my_own_scripting_language
。