“$ PATH”와“~ / bin”은 무엇입니까? 개인 대본을 어떻게 가질 수 있습니까?


29

무엇입니까 $PATH?

나만 사용할 수있는 명령 / 프로그램을 어떻게 가질 수 있습니까? 이전에 언급 된
이 경로를 보았지만 사용 된 경로 ~/bin는 무엇이며 어떻게 사용합니까?


나는 이것이 실제 질문보다 더 많은 FAQ 또는 위키 자료이기 때문에 다소 실험하고 있습니다. 이전 답변 (오른쪽의 링크 된 사이드 바에 있음)에서 ~ / bin을 언급하고 누군가가 PATH에 추가하는 방법에 대해 언급 했으므로 메시지가 표시되었습니다. 이제 간단한 의견 대신 ~ / bin이있을 때이 게시물에 연결할 수 있습니다 말하는.

답변:


26

$ PATH는 명령을 조회하는 데 사용되는 환경 변수입니다. ~는 홈 디렉토리이므로 ~ / bin은 / home / user / bin입니다. 일반 디렉토리입니다.

예를 들어, 쉘에서 "ls"를 실행하면 실제로 / bin / ls 프로그램이 실행됩니다. 정확한 위치는 시스템 구성에 따라 다를 수 있습니다. 이는 / bin이 $ PATH에 있기 때문에 발생합니다.

경로를보고 특정 명령이있는 위치를 찾으려면 다음을 수행하십시오.

$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:...
$ which ls     # searches $PATH for an executable named "ls"
/bin/ls
$ ls           # runs /bin/ls
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...
$ /bin/ls      # can also run directly
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...

자신의 개인 bin 디렉토리를 가지려면 경로에 디렉토리 만 추가하면됩니다. ~ / .profile (숨겨진 파일)을 편집하여 아래 행을 포함 시켜서 수행하십시오. 행이 주석 처리 된 경우 주석 처리를 제거하면됩니다. 그들이 이미 있다면, 모든 준비가 된 것입니다!

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then
  PATH="$HOME/bin:$PATH"
fi

이제 ~ / bin 디렉토리를 작성해야합니다. .profile은 로그인시 실행되고 ~ / bin이 존재하는 경우에만 ~ / bin을 추가하므로 업데이트 된 PATH를 보려면 다시 로그인해야합니다.

테스트 해보자.

$ ln -s $(which ls) ~/bin/my-ls   # symlink
$ which my-ls
/home/user/bin/my-ls
$ my-ls -l ~/bin/my-ls
lrwxrwxrwx 1 user user 7 2010-10-27 18:56 my-ls -> /bin/ls
$ my-ls          # lookup through $PATH
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...
$ ~/bin/my-ls    # doesn't use $PATH to lookup
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...

3
사용할 때주의해야 할 사항은 파일 시스템에서 이진 인 명령 만 찾고 셸 내장, 별명 또는 함수는보고하지 않는다는 것입니다. 종종 type실제 명령이 쉘에서 어떻게 해결되는지 확인하는 데 사용 하는 것이 더 유용합니다 . 예 : : 다른 것들을보고 which echo하고 '/ bin / echo'를 반환하지만 'type'은 쉘 내장 파일을 반환합니다. 쉘은 '/ bin'의 파일보다 선호합니다. type echowhich
Steve Beattie

@ 스티브 비티, +1 대화식 쉘로 which대체 type되거나 command대화식으로 바뀌는 것이 더 좋으며 스크립트에서는 완전히 쓸모가 없습니다.
geirha

방금 주목 한 점 은 어떤 이유로 든 $HOME변수 $PATH가 작동하지 않는 것입니다. 즉, ~대신 부호 를 사용해야 합니다.
Hi-Angel

19

에 대해서는 ~/bin사용자 만 사용할 수 및 명령 / 프로그램

최신 Ubuntu 버전에는 ~/bin디렉토리가 $PATH있지만 ~/bin디렉토리가 존재하는 경우에만 포함됩니다 .

존재하지 않는 경우 :

  1. ~/.profile다음 스탠자가 포함되어 있는지 확인하십시오 (기본값은 ~/.profile이미 있음).

    # set PATH so it includes user's private bin if it exists
    if [ -d "$HOME/bin" ] ; then
        PATH="$HOME/bin:$PATH"
    fi
    
  2. ~/bin디렉토리를 작성하십시오 .

    mkdir -p ~/bin
    
  3. 컴퓨터를 재부팅하거나 bash를 강제로 다시 읽습니다 ~/.profile.

    exec -l bash
    

"재부팅 또는 exec -l bash"팁 주셔서 감사합니다 . 뭐라고합니까 -l플래그는 무엇입니까? 에 설명이 없습니다 man exec.
evanrmurphy

3
exec -lbash를 로그인 쉘로 실행합니다 [ wiki.bash-hackers.org/commands/builtin/exec] . 즉, 그것은에 bash는 강제로 재 읽기 /etc/profile~/.profile. 그냥 실행 exec bash하면 다시 읽습니다 ~/.bashrc.
Danilo Piazzalunga
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.