在 Lubuntu 18.04 上,默认值为awk
,mawk
我发现man awk
给出了 manpagmawk
然后我安装了gawk
,就awk
成了gawk
。并man awk
给出了 的 manpag gawk
。
我想知道这是不是一般情况。换句话说,当我运行man
某个命令名称时,它是否始终提供当前与该命令名称关联的安装的联机帮助页?
谢谢。
答案1
这是更新替代方案魔法 。
如果某些命令具有相同的名称(如本例所示)gawk
和mawk
,并且两者都必须通过名称 可用awk
,则symlink
创建 。例如
/usr/bin/awk -> /etc/alternatives/awk
/etc/alternatives/awk -> /usr/bin/gawk
对男人来说也是如此
/usr/share/man/man1/awk.1.gz -> /etc/alternatives/awk.1.gz
/etc/alternatives/awk.1.gz -> /usr/share/man/man1/gawk.1.gz
man 从中读取/usr/share/man/man1/awk.1.gz
,它是指向当前安装的命令手册的符号链接,将打开当前安装的命令手册
/etc/alternatives
目录被使用更新替代方案跟踪当前使用的替代方案。
答案2
换句话说,当我运行
man
某个命令名称时,它是否始终提供当前与该命令名称关联的安装的联机帮助页?
通过正确配置的程序,是的。 (至少对于源自 Debian 的所有软件包来说应该是这种情况。)
正确设置的软件包备择方案up for 命令会将相应的联机帮助页与替代项关联起来。
mawk
设置awk
低优先级 (5) 的替代方案,并将该nawk
命令与两个联机帮助页(forawk
和nawk
)相关联。因此,每当mawk
选择 为awk
提供程序时,它也被选择为nawk
提供程序,并且其联机帮助页也被选择为awk
和联机帮助页的提供nawk
程序。
gawk
也以这种方式设置其替代方案,具有更高的优先级(10)。
默认情况下,替代方案以自动模式进行管理:每当安装或删除替代方案时,替代方案系统都会选择具有最高优先级的可用提供程序。当您安装 Lubuntu 时,仅mawk
安装了,因此它是唯一的提供程序,并且默认情况下被选中。当您安装时gawk
,有两个awk
提供程序可用,系统会选择替代方案,gawk
因为它具有最高优先级。
您可以使用 来选择自己的替代方案update-alternatives --config awk
,这将允许您强制自己的选择(通过选择“手动模式”条目之一),或使用任何自动选择(通过选择“自动模式”条目)。
所有这一切的结果是一堆符号链接/etc/alternatives
;可执行文件awk
是 的符号链接/etc/alternatives/awk
,它本身就是所选提供程序的符号链接。系统的当前状态存储在 下的文件中/var/lib/dpkg/alternatives
,每个“主要”替代项都有一个(/var/lib/dpkg/alternatives/awk
在本例中)。当然,这是一个实现细节,您应该仅用于update-alternatives
与替代系统交互。