Linux - 认识shell的解释行(Shebang)

Shebang(也称为Hashbang)是一个由井号和叹号构成的字符串行(#!),其出现在文本文件的第一行的前两个字符。Shebang用于指定命令的解释器


1、详细介绍

如下列出了一些典型的shebang解释器指令

#!/bin/sh—使用sh,即Bourne shell或其它兼容shell执行脚本
#!/bin/csh—使用csh,即C shell执行
#!/usr/bin/perl -w—使用带警告的Perl执行
#!/usr/bin/python -O—使用具有代码优化的Python执行
#!/usr/bin/php—使用PHP的命令行解释器执行

通常出现在linux的shell脚本第一行,作为解释行,告诉解释器shell的执行方式

如果第一行中:第一个字符非#:表示这是一个bash脚本。

第一个字符是#,但第二个字符不是!,表示这是一个csh脚本。

第一个字符是#,且第二个字符是!,举个例子,

如果第一行为:#!/urs/bin/python2.2

表示调用其后指定的/usr/bin/python2.2程序来执行以下的这个脚本。


执行方式说明

如果指定了解释行, xx.sh 或者 ./xx.sh则按解释行指定的来执行;

如果没有指定解释行,xx.sh 或者 ./xx.sh则按当前用户默认shell来执行,可以是csh或bash等;

如果指定了解释行,但执行 csh xx.sh 或 csh -x xx.sh,则忽略解释行,这时改为默认csh,当然你也可以用tcsh ,sh等


好处

个人觉的这样子更加规范;

解释器指令允许脚本和数据文件充当系统命令,无需在调用时由用户指定解释器,从而对用户和其它程序隐藏其实现细节;


示例

编写一个shell脚本,名为helloSheBang.sh
在这里插入图片描述

隐式调用
./helloSheBang.sh的形式执行
在这里插入图片描述
因为我们在shell脚本中用Shebang指定了bash解释器。

显示调用
bash ./helloSheBang.sh方式执行
在这里插入图片描述
前边的bash指定了解释器,脚本中无需使用Shebang也能正常执行。

如果我们Shebang指定的python,首行改为#!/usr/bin/python,再用./helloSheBang.sh的方式将会报错
在这里插入图片描述

发布了115 篇原创文章 · 获赞 4 · 访问量 4579

猜你喜欢

转载自blog.csdn.net/weixin_43999327/article/details/104553431