linux学习与实践(3)--认识shell的解释行(Shebang)

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

如下列出了一些典型的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等

 

 

好处;

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

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

 

实例问题;

在centos系统中,手动修改为csh,写一个简单脚本,如下所示,执行xx.sh或csh xx.sh老提示,第7行,vcs command not found,如果用source xx.sh或去掉第一行,则可以识别。

 

实例解决;

如上问题,仔细debug时发现,第5行打印信息和系统中env path不一致,恍然大悟,原来问题出在.cshrc文件,把第24行注释即可。

 

 

REF:1.http://zh.wikipedia.org/wiki/Shebang

      2.http://kms.lenovots.com/kb/article.php?id=9406

 

转载于:https://www.cnblogs.com/xiyoulhj/p/3727490.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值