Shell技术门类

向你的命令行脚本添加 Shebang 行

#!/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/

转载请注明出处,否则必究相关责任。

对这篇文章感觉如何?

太棒了
3
不错
0
爱死了
0
不太好
0
感觉很糟
0

You may also like

Leave a reply

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

More in:Shell

Shell

命令行也可以如此活力十足 就是这么酷炫!

桌面环境是充满魅力,吸引眼球的。不仅增强了视觉体验,而且在某些情况下能增强软件的功能,增添趣味。其实在命令行下工作也并不总是那么单调乏味。如果你想在命令行下获取几分乐趣的话,自然也是有很多命令可以令你泛起微笑。
Shell

Linux命令行下”!”的十个神奇用法

Linux 系统中,"!" 符号或者操作符通常被用做逻辑否定的操作符,同时也通过一些调整和改动命令来从历史记录中找出你需要的命令行。下面演示的命令行在bash Shell中都已经明确检查过可用了。不过我没有在其他的 Shell 解释器下测试过,不过我相信这些命令也不会在其他的解释器下运行。那么现在就让我们学习一下 "!" 这神奇而独特的用法吧!