我一直听说 shebang 行(例如#!/bin/bash
)的目标必须是二进制可执行文件,而不是脚本。对于许多操作系统(例如 MacOS)来说仍然如此。但令我惊讶的是,在 Linux 上情况并非如此,Linux 上最多可以使用 4 级脚本,其中第四个脚本在其 shebang 行中引用了二进制可执行文件。但是,如果使用 5 级脚本,则程序将失败并出现错误Too many levels of symbolic links
。
请参阅LWN 文章“程序如何运行”以及该文章中未显示的以下代码。
$ cat wrapper2
#!./wrapper
此更改何时发生(假设在某些时候不允许)?