#!/bin/sh
上面这行代码,常常出现在 shell 脚本中,是一个 shell 脚本的标准起始行,也被称作 Shebang 行。
Shebang 即 SHArp(#) 和 bang(!) 的组合,是一个由井号和叹号构成的字符序列 #!
,用于在类 Unix 系统中指定运行该文件解释器。
在文本文件中加上 Shebang 行,就能像执行系统命令一样调用一些脚本或文件,而不用另外加上解释器。
例如,在一个名为 script.py
的 Python 脚本中使用 Shebang 行,原本你需要使用以下命令执行该脚本:
$ python script.py
现在你只需要输入:
$ script.py
就可以直接运行你的脚本。
甚至,你可以删掉 .py
的后缀,或者,指定一个特定 Python 解释器的版本。
用法
在文本文件的第一行输入 Shebang 行:
#![任意个空白字符][解释器的绝对路径][一些调用参数]
在命令行输入该文件作为命令:
$ [文件名] [一些调用参数]
相当于执行了以下命令:
$ [指定的解释器] [解释器调用参数] [文件名] [文件调用参数]
具体地,假设 /usr/local/bin/foo
中有一以下行开头的 Bourne shell 脚本 #!/bin/sh -x
而它被如此调用("$"是命令提示符) $ foo bar
该命令的输出等同于 $ /bin/sh -x /usr/local/bin/foo bar
,除了 argv[0]
被设定为脚本的文件名而非解释器的文件名外。
示例
#!/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 的命令行解释器执行
最佳实践
使用 env
命令来利用环境变量中的程序解析脚本,可以提高脚本的可移植性。env
会利用 PATH
环境变量来进行定位。
例如,使用了 env
的 Shebang 看上去是这样的:
#!/usr/bin/env python
参考文章:https://zh.wikipedia.org/wiki/Shebang
本文链接:https://www.linuxstory.org/add-shebang-line-to-your-cli-script/
转载请注明出处,否则必究相关责任。
对这篇文章感觉如何?
太棒了
4
不错
0
爱死了
0
不太好
0
感觉很糟
0
More in:Shell
Linux Shell : 关于 Zsh Bash Fish
介绍著名Linux Shell - Bash、Zsh和Fish的一些注意事项和功能。 Linux之所以强大,是由于其多变的命令行界面,可与系统进行交互。在此过程中,shell担任着用户与Linux内核 […]
在Opensuse leap Linux上安装Cherrytree的步骤
cherrytree是一款分层笔记应用程序,具有丰富的文本和语法高亮功能,数据存储在单个 XML 或 SQLite 文件中。该项目的主页是 giuspen.com/cherrytree。 Snaps […]
如何清除 PHP composer 的缓存或删除其文件夹
在使用 PHP Composer 进行工作时,您是否遇到了缓慢的性能问题,为了提高其效率以及管理依赖关系,请尝试清除您的项目的 Composer 缓存。 对于那些不熟悉的人,本文是关于 PHP 应用程 […]
如何更改x-www-browser的优先级-更新备选方案
如果您的Linux系统上安装了多个浏览器,如Ubuntu或Debian,那么我们可以使用Updatealternates命令来更改它们的优先级。 Update Alternatives是Linux上可 […]