![사용자 디렉토리의 어디에 매뉴얼 페이지를 설치해야 합니까?](https://linux55.com/image/50064/%EC%82%AC%EC%9A%A9%EC%9E%90%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EC%9D%98%20%EC%96%B4%EB%94%94%EC%97%90%20%EB%A7%A4%EB%89%B4%EC%96%BC%20%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A5%BC%20%EC%84%A4%EC%B9%98%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
제가 작성한 작은 Perl 유틸리티용 Makefile을 만들려고 하는데 다음 make
과 같이 실행할 때 매뉴얼 페이지가 설치된 위치를 찾는 방법을 찾는 데 어려움을 겪고 있습니다.루트가 아닌사용자.
현재 디렉토리의 첫 번째 경로를 manpath
찾기 위해 출력을 구문 분석하고 있습니다 .$HOME
거의잘 작동합니다.
내가 찾은 경로는 다음 ~/man
과 같습니다.~/share/man
유일한 문제는 해당 디렉터리가 처음부터 존재하지 않으면 manpath
디렉터리가 출력되지 않는다는 것입니다.
질문
- 사용자의 $HOME 디렉토리에서 매뉴얼 페이지를 어디에 설치해야 하는지 알아내는 이식 가능한 방법이 있습니까?
- 그렇지 않다면 어느 것이 선호되어야 합니까?
답변1
이 디렉토리에 매뉴얼 페이지를 배치할 수 있습니다.
$HOME/.local/share/man
직접 인터뷰
그런 다음 다음을 사용하여 직접 액세스할 수 있습니다 man
.
man $HOME/.local/share/man/manX/manpage.1.gz
$MANPATH
$MANPATH
명령을 사용하여 그것이 무엇인지 확인 manpath
하거나 환경 변수를 에코할 수 있습니다 $MANPATH
.
예
$ manpath
manpath: warning: $MANPATH set, ignoring /etc/man_db.conf
/home/saml/apps/perl5/perlbrew/perls/perl-5.14.0/man:/home/saml/.rvm/rubies/ruby-1.9.2-p180/share/man:/home/saml/.rvm/man:/usr/local/share/man:/usr/share/man:/usr/brlcad/share/man:/usr/man:/usr/brlcad/share/man:/usr/brlcad/share/man
$ echo $MANPATH
/home/saml/apps/perl5/perlbrew/perls/perl-5.14.0/man:/home/saml/.rvm/rubies/ruby-1.9.2-p180/share/man:/home/saml/.rvm/man:/usr/local/share/man:/usr/share/man:/usr/brlcad/share/man:/usr/man:/usr/brlcad/share/man:/usr/brlcad/share/man
MANPATH에 임시로 콘텐츠를 추가할 수 있습니다.
MANPATH=$HOME/.local/share/man:$MANPATH
영구적으로 만들려면 위 줄을 /etc/profile.d/
사용하여 디렉터리에 파일을 추가하세요 . 이는 모든 사람을 위해 시스템 전체에서 가져옵니다. 나만을 위한 정보를 원하시면 또는 에 추가 하세요 .myman.bash
MANPATH=
$HOME/.bash_profile
$HOME/.bashrc
인용하다
답변2
저는 컴파일한 몇 가지 응용 프로그램을 설치 configure
하고 ${HOME}/usr/local
.
이제 디렉토리가 있다는 것을 알았습니다.
~/usr/local/share/man/man1
~/usr/local/share/man/man3
~/usr/local/share/man/man5
맨 페이지 gnuplot.1
, gnuplot-ja.1
, python3.1
, python3.5.1
, libpng.3
, libpngpf.3
, , zlib.3
, png.5
그래서 (내 접두사가 주어지면) 이것은 로컬에 설치된 응용 프로그램에 대한 꽤 표준적인 위치라고 생각합니다.
이는 로컬 디렉토리를 수동으로 선택해야 하는 상황에 대한 후보 위치입니다 man
.
man
물론 다음 내용이 포함된 페이지에 임의의 경로를 추가하는 것이 가능합니다(일반적으로 언급되는 경우에도 이렇게 해야 합니다).
export MANPATH="$HOME/usr/local/share/man${MANPATH:+:${MANPATH}}"
(보다추가/앞 추가에 대한 방탄 접근 방식:
) 에서 콜론을 처리하는 데 사용됩니다 PATH
.
답변3
설명과 함께 답변
저는 Windows 7에서 Cygwin을 실행하고 있습니다. 내가 시도할 때
echo $MANPATH
나는 아무것도 얻지 못했습니다. 이것은 man
새 페이지를 배치할 위치를 찾는 휴대용 방법입니다.
$ { find / -maxdepth 2 -type d -name "*man*" 3>&2 2>&1 1>&3 | \
grep -v 'Permission denied' >&3; } 3>&2 2>&1
(이 미친 명령에 대한 참고 사항은 이 답변의 맨 아래에 있습니다.)
/
로 간단하게 교체할 수 있습니다 ~
.또 다른 가능성은또한 참고하시기 바랍니다아래 섹션.
내 컴퓨터에서 find
명령은 다음을 반환합니다.
/etc/openwsman
/lib/filemanager-actions
/lib/gnome-commander
/lib/help2man
/lib/window-manager-settings
/share/man
/usr/man
나에게 이는 두 가지 가능성이 있음을 의미 /share/man
합니다 /usr/man
.
나는 를 사용하기로 선택했지만 /usr/man
여러분은 그렇지 않을 것입니다. 그러나 더 많은 탐색을 해야 합니다.
$ ls -l /usr/man
total 0
drwxr-xr-x+ 1 me Users 0 April 31 17:13 man1
그래서 작업 디렉토리의 하위 디렉토리에 man
새 파일을 넣을 때 다음을 사용했습니다.doc/
$ cp -R doc/* /usr/man/man1
이제 다음을 입력하여 "설명서"를 얻을 수 있습니다.
$ man my_new_executable
적합한 후보가 표시되지 않으면 이 섹션을 삭제하거나 변경(예: -maxdepth 3
, 또는 4
, 또는 5
)으로 변경할 수 있습니다. 또는 필요한 항목을 찾는 데 필요한 깊이만큼 변경할 수 있습니다. 이 작업을 수행했을 때 3
다른 두 후보를 찾았 /var/cache/man
지만 usr/share/man
이미 작동하는 솔루션을 찾았으므로 신경 쓰지 않았습니다.
또한 참고하시기 바랍니다
귀하의 요구 사항에 따라 루트가 아닌 사용자에게 제공될 수 있다고 생각합니다 /share/man/man1
./var/cache/man
내가 틀렸다면 정정해주세요.
약속노트는 맨 밑에 있어요
디렉토리가 파일 시스템 루트의 두 디렉토리 내에 있을 것이라고 생각하고 하위 문자열이 있는 외부 디렉토리를 너무 많이 얻고 싶지 않았기 때문에 이 옵션 -maxdepth 2
을 사용했습니다.find
man
man
/lib/gnome-co
남성der
.
주변의 추가 콘텐츠는 또는 에 액세스할 수 없는 경우 find
오류를 억제 하는 것입니다.Permission denied
su
sudo
여기무슨 일이 일어나고 있는지에 대한 좋은 설명입니다. ("gniourf_gniourf"로 시작하는 줄을 찾으세요.)