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


12

PATHMac OS에서 무엇입니까 ? 전역 명령 줄 도구를 설치하는 데 사용했지만, 내가 찾은 유일한 문서는 바로 수행하는 방법에 대한 실제 설명없이 바로 그 작업을위한 자습서 입니다. 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?


2
단일 게시물에 여러 질문을 결합하지 마십시오. 귀하의 각 질문은 여기에서 개별적으로 환영받을 것이지만 모두 이와 같은 것은 아닙니다. 이것을 하나의 질문으로 정리하십시오 .1과 2를 결합 할 수 있지만 다른 것은 PATH와는 아무런 관련이 없습니다. 3 대한 답변 여기에 4 설명 여기에 5가 난 두려워 훨씬 이해가되지 않습니다. 보너스 질문도 바이너리 파일은 무엇입니까? 스크립트는 아닙니다.
terdon

내 질문을 수정했습니다. 또한 해당 링크가 도움이되었다는 것을 알았습니다. 감사.
gwg

답변:


15

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

PATH쉘은 명시적인 경로를 제공하지 않고 명령 행에서 이름을 지정한 실행 파일을 찾을 수있는 콜론으로 구분 된 디렉토리 목록을 포함 하는 환경 변수 입니다 ( jsdoc예제 에서처럼 ). 따라서, 귀하는 경우 PATH

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

그런 다음 이름으로 호출 한 모든 실행 파일이 해당 디렉토리에서 해당 순서대로 검색되고 발견 된 첫 번째 실행 파일이 실행됩니다.

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

에 따르면 에 Serverfault에이 질문 , /etc/paths설정하는 데 사용됩니다 PATH동안 (모든 사용자에 대해, 즉 시스템 전체) 전 세계적으로 ~/.bash_profile(여기서 설정 사용자 별 환경 설정에 사용되는 ~사용자의 홈 디렉토리 될 것입니다). 작성된 것입니다 무엇을 .bash_profile할 수 있습니다 세계에 추가 PATH/etc/paths또는 완전히 무시합니다.

기록 /etc/paths을 위해, MAC OS의 특이성 인 것 같습니다 : 나는 적어도 GNU / Linux에서 그것을 보지 못했습니다.


방금 편집했지만 모두 답변 해 주셔서 감사합니다!
gwg

@ggundersen 편집 한 질문에 맞게 답변을 다듬 었습니다.
Joseph R.

@ggundersen 당신은 또한 내 답변/etc/pathsOSX 에 대한 링크 를 읽을 수도 있습니다 .
terdon

7

PATH의 목적은 무엇입니까?

이 프로그램을 찾는 방법 입니다. 사용자가 입력하는 경우 ls, 예를 들어,라는 프로그램 실행하는 ls에 사는 /bin맥 OS X의 쉘은 때문에이 것을 찾을 수 있습니다를 포함한 대부분의 시스템에 /bin에서입니다 PATH.

PATH은 왼쪽에서 오른쪽으로 프로그램을 검색합니다 . ls시스템에 두 개의 프로그램이 있고 그 디렉토리가 모두 귀하 PATH의 디렉토리에있는 경우, 귀하의 첫 번째 디렉토리에있는 디렉토리를 찾으십시오 PATH.

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

Mac OS X의 모든 쉘에서 시작할 /etc/paths때 설정된 경로 가 추가됩니다.PATH

~/.bash_profile시작시 Bash가 실행하는 여러 쉘 스크립트 중 하나 일 뿐이며이 중 일부는 Bash 전용입니다. 맥 OS X도 선박 - 당신이 당신의 쉘 변경하는 경우 따라서, tcshzsh예를 들어, -에 대한 변경 사항 /etc/bashrc새 쉘에 적용되지 않습니다.

또한 /etc/paths시스템 수준 구성 파일이며 ~/.bash_profile사용자 별입니다. Mac에 대화 형 사용자가 여러 명 설정되어 있다면 /etc/paths모든 사람에게 표시하고 싶지 않은 디렉토리를 추가 하지 않을 것입니다 PATH. /etc/bashrcBash를 셸로 사용하는 사용자에게만 적용되는 것을 제외하고 는 마찬가지입니다 .

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

변수를 설정할 때 일반적으로시길이없는 변수 만 표시됩니다. 환경 변수를 문자열로 FOO=bar설정합니다 . 를 입력 하면 셸에 모든 환경 변수가 표시되고이 경우시길이없는 변수도 표시됩니다.FOObarset

$PATH그리고 ${PATH}일반적으로 교환 할 수있다. 그들은 현재 PATH변수의 값을 그 자리에서 확장하도록 쉘에 지시합니다 . 차이점은 사용 방법과 위치와 관련이 있습니다. 예를 들면 다음과 같습니다.

$ FOO=bar
$ echo $FOO
bar
$ echo $FOOx

$ echo ${FOO}x
barx

두 번째 echo명령에서 쉘은 FOOx존재하지 않는 변수라는 변수를 인쇄하도록 요청하기 때문에 아무것도 인쇄 하지 않습니다. 쉘은 존재하지 않는 변수를 빈 것으로 취급합니다. 세 번째 echo는 중괄호 구문을 사용하므로 셸에서 FOO변수를 요청하고 있고 x바로 뒤에 인쇄하려는 다른 문자라는 것을 알 수 있습니다.

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

$ echo "$FOO"x
barx

환경 변수는 큰 따옴표로 확장되며 따옴표 x는 변수 확장 과 따옴표를 구분 하여 셸이 올바르게 수행합니다.

FOO명확성을 위해 여기 환경 변수를 사용하고 있습니다. 위에서 쓴 모든 것은 PATH단지 다른 환경 변수이기 때문에 에도 적용됩니다 . 예제 텍스트는 훨씬 길어질 것입니다.

내보내기 경로는 무엇을 의미합니까? 우리는 언제 수출합니까?

위의 FOO예에서 다른 프로그램을 실행하는 경우 FOO변수가 내보내지지 않으므로 변수가 표시되지 않습니다. 그것은 하나의 쉘 인스턴스 안에 만 있습니다.

$ echo $FOO
bar
$ bash
$ echo $FOO

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

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

당신은 사용 export이 쉘에서 설정 값을 볼 서브 프로그램을 할 때, 당신은 그렇게하지 않으려는 경우 사용하지 마십시오.

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.