我相信周围的任何人,几十年来一直在解雇 /usr/bin/startx ,除了对它所服务的工作 100% 满意之外什么也没有。
如果它有效……不要修复它!
然而,脚本的作者很明确:
强烈建议站点管理员编写更好的版本。
我只是好奇:
- 有谁知道是什么历史原因迫使作者写下如此强烈的声明?
- 有没有人写过“更好的版本“,如何以及为什么?
注意:我看到很多人要求关闭这个问题,因为它会触发基于意见的答案。
我明白如何“更好”限定词可以提出品味判断,但我就是无法想象作者”强烈敦促” 管理者要做出审美上的改变。
该脚本中的很多内容都可以更改,从强制客户端/服务器参数、尊重/忽略用户 .*rc 到甚至顺便分叉除 /usr/bin/xinit 之外的任何其他内容。
所有这些摆弄加上更多我什至无法想象,特别是在安全领域,肯定取决于完全合理的动机并适合特殊用例的目的。这正是这个问题的目的。
答案1
startx
被介绍于X11R3,于 1988 年,具有以下内容变更日志条目:
添加了一个示例 startx 脚本,其中包含适用于适当系统的条件。
这伴随着对 的许多改进xinit
,例如支持特定于用户的脚本.xserverrc
和.xinitrc
分别启动服务器和客户端的脚本。
startx
除此之外没有做太多事情:它添加了对系统范围xserverrc
和xinitrc
脚本的支持(可以很容易地添加到xinit
自身),并在 A/UX Macintosh II 系统上自行清理(在 R3 中新支持)和 Sun 系统。
当时,许多系统都有自己的 X 启动脚本,无论是启动服务器还是启动一组默认的客户端,因为 X11R2 的启动脚本xinit
很简单,需要使用包装脚本进行定制(或彻底替换)至少由系统制造商提供(例如 openwin
在 Sun 系统上)或由本地系统管理员。startx
实际上是一个非常简单的系统特定启动脚本模板;在 80 年代末和 90 年代初,系统管理员提供一个很多本地内容(脚本、手册页等)。
startx
做过包含足够的功能,使得在许多情况下无需对其进行任何更改,因为启动自定义可以完全通过提供本地xserverrc
和xinitrc
脚本来处理。它的作者大概想象许多系统管理员已经有更好的版本,或者会“轻松”编写更好的版本来反映他们当地的限制和偏好 -例如许多系统管理员会不是希望用户能够通过提供自己的.xserverrc
.
一项常见的更改是向脚本添加更多清理功能,例如终止错误的 Netscape Navigator 进程(至少在 SPARCstation 上,Netscape Navigator 4.78 在失去与 X11 服务器的连接时倾向于不退出,而是进入紧密循环)。
我没有此类脚本的档案,但有更好的版本,“更好”,如“更适合本地使用”而不是默认版本。 Linux 发行版也经常带有startx
补丁,例如 Debian 中的这个。最近,sx
xinit
是和的替代品startx
,具有许多改进(硬编码服务器启动、更好的xauth
处理、更可预测的 tty 处理)。startx
多年来,它本身发生了很多变化,但“强烈敦促站点管理员编写更好的版本。”评论从未被删除,尽管他们这样做的理由逐渐被删除。
成为startx
一个样本正如变更日志中提到的,它与 X11 发行版的其余部分相匹配;例如,X 服务器被描述为“示例服务器”,许多制造商将基于它提供自己的实现:
此版本中提供的服务器、库和应用程序是示例而不是参考实现。
(引用X11R4 发行说明;严格来说,这应该表明该实现不应被用作参考而不是实际标准,而不是该实现不打算被使用)。