Sbang允许您运行具有长Shebang行的脚本

2020-11-02 09:23:02

许多操作系统限制了Shebang行中可能的参数的长度和数量,这使得很难使用目录层次结构中的深层解释器或需要特殊参数的解释器。

要使用,请在脚本的第二行放上长条,然后让sbang翻译,如下所示:

如果Very/Long/Path实际上非常长,则在某些操作系统上运行此脚本将导致错误。在Linux上,您会得到以下结果:

在MacOS上,系统简单地假设解释器就是shell,并试图使用它运行,这不太可能是您想要的。

您可以通过两种方式使用sbang。您可以从命令行直接使用它,如下所示:

您还可以使用sbang作为脚本的解释器。将#!/bin/sh/path/to/sbang放在第1行,然后移动脚本的原始shebang toline 2:

在Linux上,您可以将第1行缩短为#!/path/to/sbang,但其他操作系统(如MacOSX)要求解释器是二进制的,因此最好使用sbang作为/bin/sh的参数。显然,要做到这一点,sbang需要有一条足够短的路径来运行,而不会触及操作系统限制。

对于lua、node和php脚本,第二行不能以#!开头,因为在这些语言中#不是注释字符(尽管它们都忽略了#!在脚本的第一行上)。像这样检测脚本,在第二行使用--、//或<;?php...?>;而不是#,例如:

Sbang是一个非常简单的POSIX shell脚本。它查看脚本参数的前两行,并以脚本作为参数运行以#!开头的最后一行。它还转发论据。

Long-shebang项目类似于sbang,但它是用C编写的,而不是用POSIX sh编写的。由于类似的原因,在sbang退出Spack几个月后,它也从Nix成长起来。

Sbang是按照麻省理工学院许可和Apache许可(2.0版)的条款分发的。用户可以根据自己的选择选择任一许可证。