rename.ul
我在我的 Ubuntu 机器上发现了一个命令。它来自util-linux
包。
这对我来说很奇怪,因为我很少看到带扩展名的可执行文件。此外,由于文件是经过编译的,因此这似乎没有必要。
这其中有什么历史或技术原因吗?
我也很困惑,因为我找不到与此扩展名相关的文件格式。
答案1
rename
该扩展是为了避免与 Debian 上可用的大量命令发生冲突。这个改变于 2007 年制定,以响应Debian 错误 #439647:
/usr/bin/rename 由替代系统管理(默认使用 Perl 版本)。 util-linux 2.13~rc3-8 在那里安装自己的二进制文件,而不是将其注册为替代方案。
作为回应,util-linux
rename
被重命名为rename.ul
.
即便如此,rename.ul
语法与 Perl 变体有很大不同,默认情况下它不会添加到替代系统中(请参阅Debian 错误 #439935)。
答案2
正如评论者所猜测的那样,这可能是Debian 替代系统在行动中。
如果一个发行版有多个包含同名文件的包,则包的创建者需要知道这一点,并且需要有一种机制供管理员选择他们想要使用其中的一个。因此,所有冲突的文件都会被重命名(通常带有后缀,但这可以在包元数据中指定),并且原始文件名将成为指向/etc/alternatives/<original filename>
.反过来,这将是另一个符号链接,指向现在重命名的文件之一。
系统管理员可以使用该update-alternatives
工具来选择原始名称将指向文件的哪个版本。仍然可以使用新名称访问其他版本。
该update-alternatives
工具可以处理“系列”事物,因此当您同时安装了传统和 OpenBSD netcat 并使用sudo update-alternatives --config nc
一种或另一种方式切换默认值时,相应的手册页名称也将被切换。
一个常见的例子是/usr/bin/editor
。在 Debian 风格的系统上,这是一个符号链接,其他程序可以使用它来获取“该系统上的默认文本编辑器,无论它是什么”。最小安装后,它可能默认为nano
,因此editor example.txt
将打开 中的文本文件nano
,并man editor
显示 的手册页nano
。
但是,如果您安装的编辑器在替代系统中具有更高的优先级,例如joe
,那么它会自动成为新的默认值,因此现在editor example.txt
将使用它joe
,并且man editor
现在还将显示joe
的手册页。您还可以用来sudo update-alternatives --config editor
选择要作为默认编辑器的已安装编辑器,一旦您以这种方式做出选择,自动优先级将不会覆盖它。