Sha-Bang 是什么

作者: 重庆思庄 | 来源:发表于2019-10-29 15:47 被阅读0次

Q. #!的名字为什么叫Sha-Bang?

A. Sha-Bang是Sharp和Bang的组合词。Sharp for #, Bang for ! 类似的情况是,C#通常被称为C Sharp

Q. Sha-Bang(#!)是不是注释?

A. 不是注释。Sha-Bang(#!)所在行的作用是告知该脚本使用的是哪种命令解释器,并不是可有可无的。虽然很多情况下省略了Sha-Bang(#!)仍然能够运行脚本,这是由于系统在这种情况下是默认使用了当前命令行解释器的

Q. Sha-Bang(#!)的编写有什么规范?

A. Sha-Bang(#!)应该位于脚本的第一行,并且顶格填写,否则都是错的,即使Sha-Bang之前的内容都是注释,这种错误是常见的,而且不易发现的,因为此时Sha-Bang(#!)所在行实际上是不起效的,系统使用了默认的命令行解释器

Q. Sha-Bang(#!)在同一个脚本中可以出现几次?

A. 只有第一行的Sha-Bang(#!)会生效,其余的会视为注释

Q. 为什么推荐这种写法:#!/bin/env perl?

A. 因为这是有利于移植脚本到其它平台的写法,解释器的默认安装路径在各个操作系统是不太一样的,有的是/bin/,有的是/usr/bin/,甚至有可能是用户自定义的路径,使用env就基本上能够通用了。虽然env也有可能在/bin/或者/usr/bin/中,但通常的情况是在这两个路径下都有env,或者其中一个是另一个的符号链接

最后提醒一下,有时候设定的cronjob异常,但是命令行能够执行成功,请先检查一下Sha-Bang(#!)是否合法,然后检查是否缺少了必须的环境变量,命令行能够执行成功可能是利用了默认的命令行解释器和环境变量。

相关文章

  • Sha-Bang 是什么

    Q. #!的名字为什么叫Sha-Bang? A. Sha-Bang是Sharp和Bang的组合词。Sharp fo...

  • 第一个shell脚本

    第一个shell脚本 1、关于#! 在脚本开头的 sha-bang (#!) 是告诉系统这个文件是由特定命令解释器...

  • 发展

    承诺是什么?努力是什么?心态是什么?理想是什么?亲情是什么?爱情是什么?朋友是什么?自己是什么?当换了环境,...

  • 我真的害怕忘记

    空气是什么 等是什么 切断是什么 我是什么 光海是什么 爱是什么 风帆是什么 你是什么 (呼吸还在吗 恐...

  • 烦恼如何被消灭

    纠结是什么?烦恼又是什么?心是什么?阴阳又是什么?境是什么?世界又是什么?扭曲是什么?变形又是什么?真实是...

  • 疑问

    误会是什么?坚持是什么?执着是什么?三观是什么?背信弃诺又是什么? 烦躁是什么?焦躁是什么?疑...

  • 一颗心的漂流

    离开的是什么 留下的是什么 挣脱的是什么 奔赴的是什么 守护的是什么 向往的是什么 生命是什么 生活是什么 爱是什...

  • 是什么就是什么

    26岁,终于知道为什么矛盾的时候无法自持,情绪化的时候疯狂到无法控制,忧郁的时候想离开这个世界。 26岁,终于...

  • 是什么?还是什么

    世界上最尴尬的事,是否就是,胸中有千言万语,落笔却一句难寻。 现在2018年01月25日凌晨两点,某个...

  • 是什么就是什么

    任何一项任务都有其专属的评判指标,有的人能达到,有的人达不到,这也就使得一部分人成为领导或专家,一部分人只能成为下...

网友评论

    本文标题:Sha-Bang 是什么

    本文链接:https://www.haomeiwen.com/subject/nbkgvctx.html