当我
man -k "^printf"
在终端中,返回以下重复结果:
printf(1) - formatted output
printf(1) - formatted output
printf(3), fprintf(3), sprintf(3), snprintf(3), asprintf(3), dprintf(3), vprintf(3), vfprintf(3), vsprintf(3), vsnprintf(3), vasprintf(3), vdprintf(3) - formatted output conversion
还有…当我
man -k 1
它还返回一堆重复的结果。
这是一台新的M1 MAX Mac,我甚至还没有做任何设置更改,但上面的问题实际上正在发生。我的新Mac怎么了?
3条答案
按热度按时间j2datikz1#
苹果的
man(1)
中有一个bug,最近是Ventura 13.4.1。如果您的路径中有groff(1)
,并且没有预先格式化的“cat”页面,则请求的页面将显示两次。在
/usr/bin/man
中,参见函数man_display_page()
。如果groff(1)
在$PATH
上,则调用man_display_page_groff()
(第一次显示页面),之后脚本 * 应该 * 返回;但是它错误地福尔斯通过并再次显示该页面。该问题在此处下游标记:https://github.com/Homebrew/homebrew-core/issues/133561
我还通过feedbackassistant.apple.com向Apple报告了这个问题(这些门票不能公开共享)。
rlcwz9us2#
你可以执行
man -w
,看看这个人在哪里查找手册页。如果您的系统在多个路径中有手册页的副本,则会出现此问题(使用man -k printf
时结果重复)。在我的系统中,有多个人的路径。下面是我的
man -w
的输出。除此之外,下面两个有一些复制的手册页。例如,
printf
可以在两个路径中找到。如果在
MANPATH
中执行ls -l
,您将看到两者都有一些相同手册页的副本。man -k somecommand
时,它会显示man -w
中包含的所有路径的结果。如果你想避免这种情况,你需要修改$MANPATH
环境变量。将其设置为你希望你的人命令看的路径。*cbjzeqam3#
正如Kurt Starsinic指出的那样,macOS
man
二进制文件中存在一个错误。我们可以通过以下步骤来解决这个问题,以覆盖系统
man
: