![SysVinit 3.14 发布:克服了 inittab 行长度的三十年限制](http://www.linuxeden.com/wp-content/uploads/2025/02/xgdzo3kc.png)
SysVinit 3.14 中最大的变化是克服了 inittab 文件每行 127 个字符的限制,该限制大约在过去三十年中一直存在。随着 SysVinit 的向前发展,inittab 行最多可以有 253 个字符……那些 inittab 行很长的人最好将该逻辑分流到一个 shell 脚本中,然后可以从 inittab 调用该脚本。
今天的 SysVinit 3.14 发布公告详细阐述了这一变化:
“此版本中最大的更改涉及 inittab 配置文件。多年来,inittab 文件中条目的最大行长度约为 127 个字符。在大多数情况下,这很好,而且在过去 30 年里似乎起到了作用。然而,那里有两个问题。
首先,如果有人想要运行更长的命令,比经典终端屏幕更长的命令很宽,那么 init 不会接受该命令。在我看来,更大的问题是处理了多长的队伍。如果你有一个超过 127 个字符的 lone,它会被截断,然后 init 会尝试运行剩余的任何内容。
经典的 truncate-and-run 行为具有潜在危险。因为,虽然大多数人不会在他们的 inittab 文件中放置 giant 命令,但如果他们这样做了,可能会导致意外行为。例如,用户不希望他们的 init 程序将清理命令行从 “rm -rf /var/tmp” 截断为仅 “rm -rf /var”。
因此,虽然 30 年来,大约 127 个字符对大多数人来说已经足够了,但这种行为很狡猾,需要纠正。现在,inittab 条目的长度可以是 253 个字符,并且当找到超过此长度的行时,它会记录警告,并且拒绝运行长度超过 253 个字符的行。它不再截断太长的行,它只是丢弃它们。
我认为大多数人无论如何都会在他们的 shell 脚本中放置长行和复杂的逻辑,但这只是针对潜在问题的额外保护。
其他 SysVinit 3.14 更改很小,但有一些手册页更新,并在其 Makefile 中重新添加了 “DESTDIR” 变量支持。
通过 GitHub 获取 SysVinit 3.14 的更多详细信息和下载。