我是一个系统上的无特权用户,所以我已经在我的主目录中安装了一些软件。除了将~/.local/usr/bin添加到PATH之外,我还将~/.local/usr/share/man添加到MANPATH中,以便查询这些包的手册页。
例如,其中一个命令是cgdb。
man cgdb工作得很好,它是从我的MANPATH环境变量中获取手册。
但是apropos cgdb (man -k cgdb,whatis cgdb)不起作用。
$ apropos cgdb
cgdb: nothing appropriate我在man apropos然后man whatis中读到,whatis数据库可以用makewhatis重新生成,但是这似乎只能由系统目录中的特权用户来完成。我无法在用户空间找到任何方法来做到这一点。
是否可以使用apropos (a.k.a. )。( man -k)在由非特权用户所指向的非系统目录( MANPATH )上?
FWIW:这在CentOS 6服务器上
$ uname -osrv
Linux 2.6.32-754.11.1.el6.x86_64 #1 SMP Tue Feb 26 15:38:56 UTC 2019 GNU/Linux
$ lsb_release -d
Description: CentOS release 6.6 (Final)发布于 2020-01-18 03:09:43
apropos通常会读取预生成的索引文件以提高速度,而不是搜索每个手册页。
这意味着每当添加手册页时,都需要更新索引文件。
在CentOS 6上,系统手册通过/etc/cron.daily/makewhatis.cron中的cron作业每晚更新。
现在,makewhatis可以使用-o标志来指定您自己的目录。但是它似乎不起作用..。
% makewhatis -v $HOME/man -o $HOME/man/whatis
about to enter /home/sweh/man
skipping /var/cache/man - whatis file is readonly
% cat man/whatis
% 但是,makewhatis是一个脚本,所以可以复制它并修改它以指定一个新路径:
% diff mymakewhatis /usr/sbin/makewhatis
69c69
< DEFWHATISDIR=$HOME/man
---
> DEFWHATISDIR=/var/cache/man现在:
% ./mymakewhatis -v $HOME/man
about to enter /home/sweh/man
adding /home/sweh/man/man1/smbsh.1我们可以看到它现在有一个条目:
% cat man/whatis
smbsh (1) - Allows access to remote SMB shares using UNIX commandsapropos的工作原理是:
% man -k smbsh
smbsh (1) - Allows access to remote SMB shares using UNIX commandshttps://unix.stackexchange.com/questions/562691
复制相似问题