【发布时间】:2018-01-31 01:49:00
【问题描述】:
我在某处读到,在 Linux 中,shebang 行 (#!) 不能超过 127 个字符。我有一个 Perl 脚本,它的 shebang 行超过 300 个字符,而且它还没有失败(还)。该限制是否仅适用于可执行路径(在我的情况下小于 100 个字符),还是有一些奇怪的魔法在起作用?
【问题讨论】:
-
我认为 127 是 POSIX 平台可以施加的最小值限制(因此您可以可移植地依赖的最大值)。您的平台的实际最大值也在重复的答案中提到 - Linux 中的
BINPRM_BUF_SIZE。 -
你怎么知道它没有失败?如果您使用 Bash 运行脚本,并且您的
#!类似于/very/long/path/to/bash,它可能会在您不知情的情况下静默失败。 -
我怀疑 Perl 本身有什么限制。
-
Re "剩下的命令行参数太多了。",为什么要使用shebang行呢?您实际上是在将值从脚本传递给脚本,而不是一开始就在脚本中使用它们!