gpt4 book ai didi

linux - Perl shebang 行的最大长度?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:26:30 25 4
gpt4 key购买 nike

我在某处读到,在 Linux 中,shebang 行 (#!) 不能超过 127 个字符。我有一个 Perl 脚本,它有超过 300 个字符的 shebang 行,而且它还没有失败(还)。该限制是否仅适用于可执行路径(在我的例子中小于 100 个字符),还是有一些奇怪的魔法在起作用?

最佳答案

Does the limit apply only to the executable path (which is under 100 chars in my case), or is there some strange magic at work?

这个限制只适用于可执行路径,因为有奇怪的魔法在起作用。这种奇怪的魔法以 Perl 的名字命名。

首先,127 个字符的限制是正确的。 (或者可能是 128 或 126,实际上并没有计算在内。)超过的所有内容都会被截断。其次,无论 shebang 行上是否有空格,Linux 都会将可执行文件名称后的所有内容作为一个参数传递。第三,Perl 将解析 shebang 行并自行解释它,这就是它起作用的原因。但请注意,这一切的效果很奇怪,而且有点反常。假设 shebang 行看起来像这样:

#!/bin/perl -I/lib-one -I/lib-two

并且假设截断发生在接近尾声的地方,比如说,就在“two”中的“w”之前(也就是说,为了便于阅读,假设限制是 32 而不是 128)。那么效果就好像你在命令行中调用了perl,如下所示:

shell-prompt$ /bin/perl "-I/lib-one -I/lib-t" -I/lib-one -I/lib-two

在这种情况下哪个“有效”,但通常无效。

关于linux - Perl shebang 行的最大长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45823320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com