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. PATH의 목적은 무엇입니까?
PATH
는 콜론으로 구분 된 디렉토리 목록을 포함하는 환경 변수 입니다. 여기서 쉘은 명령 줄에서 이름을 제공하지 않고 이름을 지정한 실행 파일을 찾습니다. 이들에 대한 명시 적 경로 (jsdoc
예에서와 같이). 따라서 PATH
에
/usr/bin:/bin:/home/bin
이름으로 호출 한 실행 파일이이 디렉토리에서 검색됩니다. (순서대로) 발견 된 첫 번째 실행 파일이 실행됩니다.
2. 이 질문에 따르면 / etc / paths와 ~ / .bash_profile
의 차이점은 무엇입니까? ServerFault , /etc/paths
는 PATH
를 전역 (즉, 모든 사용자에 대해 시스템 전체)으로 설정하는 데 사용되며 ~/.bash_profile
는 사용자 별 환경 설정을 지정하는 데 사용됩니다 (여기서 ~
는 사용자의 홈 디렉토리입니다). 는 /etc/paths
에서 글로벌 PATH
에 추가하거나 완전히 덮어 쓸 수 있습니다.
For 기록, /etc/paths
는 MAC OS의 특성 인 것 같습니다. 적어도 GNU / 리눅스에서는 본 적이 없습니다.
댓글
답변
PATH의 목적은 무엇입니까?
shell 은 프로그램을 찾습니다. 예를 들어 ls
를 입력하면 /bin
에있는 ls
라는 프로그램이 실행됩니다. div>는 Mac OS X를 포함한 대부분의 시스템에서 찾을 수 있습니다. 쉘은 /bin
가 PATH
에 있기 때문에이를 찾을 수 있습니다.
쉘은 PATH
순서로 왼쪽에서 오른쪽으로 프로그램을 검색합니다. 시스템에 두 개의 ls
프로그램이 있고 해당 디렉토리가 모두 PATH
에 있으면 나열된 디렉토리에서 해당 프로그램을 찾습니다. 먼저 PATH
에서.
/ etc / paths와 ~ / .bash_profile의 차이점은 무엇입니까
/etc/paths
에 설정된 경로는 다음 위치의 PATH
에 추가됩니다. Mac OS X의 모든 셸에서 시작됩니다.
~/.bash_profile
는 시작시 Bash에서 실행하는 여러 셸 스크립트 중 하나 일 뿐이며이 중 일부는 Bash와 관련이 있습니다. 따라서 셸을 변경하면 — Mac OS X도 tcsh
및 zsh
를 제공합니다. 예를 들어 —의 /etc/bashrc
변경 사항은 새 셸에 적용되지 않습니다.
또한 /etc/paths
는 시스템 수준 구성 파일이고 ~/.bash_profile
는 사용자 단위입니다. Mac에 대화 형 사용자를 여러 명 설정 한 경우 “모든 사람”의 iv id = “에 표시하고 싶지 않은 디렉토리를 /etc/paths
에 추가하고 싶지 않을 것입니다. 0167f2e7cf “>
. /etc/bashrc
의 경우도 마찬가지입니다. 단, Bash를 셸로 사용하는 사용자에게만 적용된다는 점만 다릅니다.
PATH와 $ PATH 및 $ {PATH}의 차이점은 무엇입니까?
보통 변수를 설정할 때시길이없는 변수입니다. FOO=bar
는 FOO
환경 변수를 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>
다른 질문에는 대답하지 않겠습니다. 한 번에 하나의 질문 만해야합니다. 나는 그들이 모호하게 관련되어 있기 때문에이 많은 것에 대해서만 대답했습니다. 다른 모든 것은 별도의 질문에 속합니다.
/etc/paths
에 대한 링크입니다.