저는 시스템에서 권한이 없는 사용자이므로 홈 디렉터리에 일부 소프트웨어가 설치되어 있습니다. ~/.local/usr/bin
my 에 추가하는 것 외에도 이러한 패키지에 대한 매뉴얼 페이지를 쿼리할 수 있도록 my에도 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
?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)
답변1
apropos
일반적으로 각 맨페이지를 검색하는 대신 미리 생성된 색인 파일을 빠르게 읽습니다.
이는 맨페이지가 추가될 때마다 인덱스 파일을 업데이트해야 함을 의미합니다.
CentOS 6에서는 시스템 매뉴얼 페이지가 야간에 전달됩니다 /etc/cron.daily/makewhatis.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 commands
그리고 apropos
작동합니다:
% man -k smbsh
smbsh (1) - Allows access to remote SMB shares using UNIX commands