企业级软件开发服务商,为企业级客户提供定制软件开发及解决方案服务!

热线:028-68761216 18108129768

LINUX上Centos下的的(#!)SHEBANG符号深入了解

2020-01-30 648 次
分类: 技术博客

今天在使用python写centos下的linux脚本时,是需要在脚本的顶部第一行加入,之前很少写,脚本,也没深究这个#!是什么意思,囫囵吞枣的就过去了,因为接下来的在可预料的企业软件开发及软件开发后部署时都需要使用脚本,这个还必须了解。今天特意google了一次。本文了将给你简单介绍一下Shebang("#!")这个符号。

今天在使用python写centos下的linux脚本时,是需要在脚本的顶部第一行加入

#! /usr/bin/env python3

之前很少写,脚本,也没深究这个#!是什么意思,囫囵吞枣的就过去了,因为接下来的在可预料的企业软件开发及软件开发后部署时都需要使用脚本,这个还必须了解。今天特意google了一次。对他做深入了解。此记之。

首先,这个符号(#!)的名称,叫做"Shebang"或者"Sha-bang"(翻译 [ʃɪˈbæŋ]工作;赌场;事件 的意思)(还有其他一些名称,不过我一般就用这两个)。

Shebang这个符号通常在Unix系统的脚本中第一行开头中写到,它指明了执行这个脚本文件的解释程序。

1. 如果脚本文件中没有#!这一行,那么它执行时会默认用当前Shell去解释这个脚本(即:$SHELL环境变量)。

2. 如果#!之后的解释程序是一个可执行文件,那么执行这个脚本时,它就会把文件名及其参数一起作为参数传给那个解释程序去执行。

3. 如果#!指定的解释程序没有可执行权限,则会报错“bad interpreter: Permission denied”。
    如果#!指定的解释程序不是一个可执行文件,那么指定的解释程序会被忽略,转而交给当前的SHELL去执行这个脚本。

4. 如果#!指定的解释程序不存在,那么会报错“bad interpreter: No such file or directory”。
    注意:#!之后的解释程序,需要写其绝对路径(如:#!/bin/bash),它是不会自动到$PATH中寻找解释器的。

5. 当然,如果你使用"bash test.sh"这样的命令来执行脚本,那么#!这一行将会被忽略掉,解释器当然是用命令行中显式指定的bash。

例如:test.sh

#!/bin/bash
echo "hello, world."
echo "hello, ${1}."

chmod a+x  test.sh

./test.sh   cdjsw(运行之时,其实是 /bin/bash ./test.sh Jay)

结果为:

hello, world.
hello, cdjsw.

此处,完结了。

文章来源:久思微软件开发运维部

头条文章
1 2020年成都久思微信息技术有限公司年会通知及相关软件开发项目安排
值此新春佳节来临之际,为感谢软件开发员工一年来的信任、辛勤工作,同时继续增进团队之间沟通和协作能力,能再接再厉再创辉煌,实现2020年公司软件开发年度目标,我司将举行“加强协作、稳进突破”为主题的年会活动
2 成都久思微信息技术有限公司2020年春节放假通知及软件开发相关安排
根据国务院办公厅国庆放假通知精神,并结合成都久思微信息技术有限公司及定制软件开发项目实际情况,经研究决定,公司决定2020年春节放假安排如下:
3 成都久思微信息技术有限公司2019年国庆放假通知
根据国务院办公厅国庆放假通知精神,并结和成都久思微信息技术有限公司及定制软件开发项目实际情况,经研究决定,公司决定2019年十一国庆节放假安排如下
4 成都企业级软件开发服务商:久思微乔迁新址再起新征程
成都久思微信息技术有限公司,成立于2014年4月10日,我们不忘初心,努力为客户带去更好的软件开发服务。每一个软件开发项目,久思微即以深耕的姿态从客户的发展和疼点的去分析软件开发需求、挖掘并理解客户的每一个疼点和细节,力求广大客户营造一个更加良好的开发体验。
5 成都定制软件开发服务公司:2019年51劳动节放假通知
 2019年5月1日-2019年5月4日——劳动节为国家法定假日。为便于各位同事及早合理地安排节假日软件开发或小程序定制开发及其已上线运维等有关工作,现将放假调休日期具体安排通知如下