Mac OS에서 PATH는 무엇입니까?

Mac OS에서 PATH는 무엇입니까? 전역 명령 줄 도구를 설치하는 데 사용했지만 내가 찾은 유일한 문서는 그 작업을 수행하기위한 튜토리얼 뿐이며 실제 상황에 대한 설명은 없습니다. 후드. 또한 Wikipedia 에서 관련 페이지를 찾지 못했습니다.

PATH 그리고 /etc/paths~/.bash_profile **의 차이점은 무엇입니까?

예를 들어 paths 파일을 보면 다음과 같습니다.

/usr/bin /bin /usr/sbin /sbin /usr/local/bin 

하지만 내 ~/.bash_profile, 다음과 같이 표시됩니다.

# Setting PATH for Python 2.7 # The orginal version is saved in .bash_profile.pysave PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}" export PATH 

이것은 단지 paths 파일에 대한 사용자 별 추가입니까? “paths에있는 모든 항목 (예 : /usr/bin)?

댓글

  • ' 여러 질문을 하나의 게시물에 결합하지 마십시오. 각 질문은 여기에서 개별적으로 환영하지만 이와 같이 모두 함께하는 것은 아닙니다. 이 질문을 하나의 질문으로 줄이십시오. 1과 2를 결합 할 수 있지만 다른 질문은 PATH와 특별히 관련이 없습니다. 3은 여기 에 대답합니다. 4는 여기 에 설명되어 있고 5는 그다지 말이되지 않습니다. id = “6148c9e9bc”>

안타깝습니다. 보너스 질문도 아니고 어떤 파일이 바이너리입니까? 스크립트는 아닙니다.

  • 내 질문을 수정했습니다. 또한 해당 링크가 도움이되는 것으로 나타났습니다. 감사합니다.
  • 답변

    1. PATH의 목적은 무엇입니까?

    PATH 는 콜론으로 구분 된 디렉토리 목록을 포함하는 환경 변수 입니다. 여기서 쉘은 명령 줄에서 이름을 제공하지 않고 이름을 지정한 실행 파일을 찾습니다. 이들에 대한 명시 적 경로 (jsdoc 예에서와 같이). 따라서 PATH

    /usr/bin:/bin:/home/bin 

    이름으로 호출 한 실행 파일이이 디렉토리에서 검색됩니다. (순서대로) 발견 된 첫 번째 실행 파일이 실행됩니다.

    2. 이 질문에 따르면 / etc / paths와 ~ / .bash_profile

    의 차이점은 무엇입니까? ServerFault , /etc/pathsPATH를 전역 (즉, 모든 사용자에 대해 시스템 전체)으로 설정하는 데 사용되며 ~/.bash_profile는 사용자 별 환경 설정을 지정하는 데 사용됩니다 (여기서 ~는 사용자의 홈 디렉토리입니다). 는 /etc/paths에서 글로벌 PATH에 추가하거나 완전히 덮어 쓸 수 있습니다.

    For 기록, /etc/paths는 MAC OS의 특성 인 것 같습니다. 적어도 GNU / 리눅스에서는 본 적이 없습니다.

    댓글

    • 방금 수정했지만 모두 답변 해 주셔서 감사합니다!
    • @ggundersen 수정 한 질문에 맞게 답변을 정리했습니다.
    • @ggundersen 내 답변 을 읽고 싶을 수도 있습니다. e는 OSX의 /etc/paths에 대한 링크입니다.

    답변

    PATH의 목적은 무엇입니까?

    shell 은 프로그램을 찾습니다. 예를 들어 ls를 입력하면 /binls라는 프로그램이 실행됩니다. div>는 Mac OS X를 포함한 대부분의 시스템에서 찾을 수 있습니다. 쉘은 /binPATH에 있기 때문에이를 찾을 수 있습니다.

    쉘은 PATH 순서로 왼쪽에서 오른쪽으로 프로그램을 검색합니다. 시스템에 두 개의 ls 프로그램이 있고 해당 디렉토리가 모두 PATH에 있으면 나열된 디렉토리에서 해당 프로그램을 찾습니다. 먼저 PATH에서.

    / etc / paths와 ~ / .bash_profile의 차이점은 무엇입니까

    /etc/paths에 설정된 경로는 다음 위치의 PATH에 추가됩니다. Mac OS X의 모든 셸에서 시작됩니다.

    ~/.bash_profile는 시작시 Bash에서 실행하는 여러 셸 스크립트 중 하나 일 뿐이며이 중 일부는 Bash와 관련이 있습니다. 따라서 셸을 변경하면 — Mac OS X도 tcshzsh를 제공합니다. 예를 들어 —의 /etc/bashrc 변경 사항은 새 셸에 적용되지 않습니다.

    또한 /etc/paths는 시스템 수준 구성 파일이고 ~/.bash_profile는 사용자 단위입니다. Mac에 대화 형 사용자를 여러 명 설정 한 경우 “모든 사람”의 iv id = “에 표시하고 싶지 않은 디렉토리를 /etc/paths에 추가하고 싶지 않을 것입니다. 0167f2e7cf “>

    . /etc/bashrc의 경우도 마찬가지입니다. 단, Bash를 셸로 사용하는 사용자에게만 적용된다는 점만 다릅니다.

    PATH와 $ PATH 및 $ {PATH}의 차이점은 무엇입니까?

    보통 변수를 설정할 때시길이없는 변수입니다. FOO=barFOO 환경 변수를 bar. set를 입력하면 셸에 모든 환경 변수가 표시되며이 경우시길없이 변수도 표시됩니다.

    $PATH${PATH}는 일반적으로 서로 바꿔 사용할 수 있습니다. 현재 PATH 변수를 확장하도록 셸에 지시합니다. ” 에스 가치 제자리. 차이점은 사용 방법과 위치와 관련이 있습니다. 예 :

    $ FOO=bar $ echo $FOO bar $ echo $FOOx $ echo ${FOO}x barx 

    두 번째 echo 명령에서 쉘은 인쇄 할 것을 요청하기 때문에 아무것도 인쇄하지 않습니다. 존재하지 않는 FOOx라는 변수. 셸은 존재하지 않는 변수를 비어있는 것으로 처리합니다. 세 번째 echo는 중괄호 구문을 사용하기 때문입니다. , 셸에서 FOO 변수를 요청하고 x가 즉시 인쇄하려는 또 다른 문자임을 알 수 있습니다. .

    중괄호없이 동일한 효과를 얻을 수있는 또 다른 방법이 있습니다.

    $ echo "$FOO"x barx 

    환경 변수는 큰 따옴표와 따옴표는 변수 확장에서 x를 구분하므로 쉘이 올바른 작업을 수행합니다.

    환경 변수는 명확성을 위해 여기에 있습니다. 위에서 작성한 모든 내용은 , 다른 환경 변수이기 때문입니다. 예제 텍스트는 훨씬 더 길 것입니다.

    export PATH는 무엇을 의미합니까? 언제 내보낼까요?

    위의 FOO 예제를 사용하여 다른 프로그램을 실행하려면 FOO 변수는 내보내지지 않았기 때문에 표시되지 않습니다. 하나의 셸 인스턴스 내에서만 존재합니다.

    $ echo $FOO bar $ bash $ echo $FOO $ exit $ export FOO $ bash $ echo $FOO bar 

    이미 사용중인 쉘 아래에서 새 bash 쉘을 처음 실행 한 다음 FOO의 값을 표시하려고하면 하위 프로그램을 볼 수 있도록 FOO를 내 보내지 않았으므로 공백이됩니다. 그런 다음 두 번째 bash 인스턴스를 종료하고 내 보낸 다음 bash를 다시 실행했습니다. 이제 두 번째 인스턴스에 FOO.

    하위 프로그램이 셸에 설정된 값을 보도록하려는 경우 export를 사용하고 사용하지 않습니다. 그런 일이 일어나지 않기를 원할 때.

    일반적으로 쉘 스크립트에서 임시 변수를 내 보내지 않습니다. 왜냐하면 쉘 스크립트에서 실행되는 프로그램이 작동하는 방식을 변경하지 않기를 원하기 때문입니다.

    p>

    다른 질문에는 대답하지 않겠습니다. 한 번에 하나의 질문 만해야합니다. 나는 그들이 모호하게 관련되어 있기 때문에이 많은 것에 대해서만 대답했습니다. 다른 모든 것은 별도의 질문에 속합니다.

    답글 남기기

    이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다