요세미티의 명령 행에서 직접 PATH 내보내기-PATH는 어디에 있습니까? 실행하는 것이 좋습니다. $

Homebrew를 통해 설치 한 최신 버전의 git을 사용하고 싶기 때문에 PATHOS X에서 OS X 및 명령 줄 도구와 함께 제공되는 오래된 버전 대신 Homebrew 버전을 사용하도록 변수를 변경해야했습니다 . 이 튜토리얼 에서는 다음을 간단히 실행하는 것이 좋습니다.

$ export PATH=/usr/local/bin:$PATH

그것이 내가 한 일이며 훌륭하게 작동했습니다.

내 질문은 :이 명령은 PATH변수를 어디에서 수정 했습니까? 나는이없는 ~/.bashrc, ~/.bash_profile또는 ~/.profile전혀 내 홈 디렉토리에있는 파일,하지만 난 때 $ echo $PATH다음은 PATH올바른 표시 및 실행할 때 which gitgit --version모든 것이 올바른 위치를 가리 키도록 나타납니다. 올바른 경로가 나열되어 /etc/paths있지만 export명령 줄에서 테스트 경로를 추가하면 해당 파일에 테스트 경로가 나타나지 않습니다.

또 다른 질문 : 이것이 내 PATH변수 를 수정하는 좋은 방법 입니까?

마지막 질문 :이 방법의 장점과 단점은 무엇입니까?

편집 : 올바른 경로가 나열되어 /etc/paths있지만 사용하여 테스트 경로를 추가 $ export PATH=/test:$PATH하면 테스트 경로가에 나타나지 /etc/paths/않지만 실행할 때 처음 표시되지만 $ echo $PATH재부팅 후 손실됩니다.



답변

6 월 3 일에 다음 코멘트를 게시했습니다.

@DavidAnderson 따라서 올바르게 이해하면 대화 형 셸 세션에서 export PATH …를 실행하면 해당 세션의 $ PATH에만 영향을 미치고 새로 추가 된 경로는 어디에도 저장되지 않으므로 새로 추가 된 경로를 편집 할 수있는 파일이 없습니다 ). 예를 들어 export PATH = / test : $ PATH를 실행하지만 대신 / testing_123 디렉토리를 내보내려는 경우 가장 좋은 방법은 잘못된 / test 디렉토리가 포함 된 파일을 찾아서 편집하지 않고 새 세션을 시작하는 것입니다. (그러한 파일이 없기 때문에). 옳은?

귀하의 의견에 대한 나의 답변

bash 매뉴얼 페이지에서 다음을 추출했습니다.

A parameter is an entity that stores values.  It can be a name, a
number, or one of the special characters listed below under Special
Parameters.  A variable is a parameter denoted by a name.  A variable
has a value and zero or more attributes.

PATH변수의 이름입니다. 일반적으로이 변수에는 내보내기 속성 만 설정되어 있습니다. export 속성은 환경을 통해 후속 명령으로 내보낼 변수를 표시합니다. 이 export명령은 내보내기 속성을 설정하지만 PATH변수 의 경우 내보내기 속성이 이미 설정되어 있습니다. 따라서 PATH변수의 경우 다음 네 명령이 동일합니다.

PATH=/test:$PATH
export PATH=/test:$PATH
declare PATH=/test:$PATH
typeset PATH=/test:$PATH

귀하의 의견은 정확합니다. 그러한 파일이 없습니다.

언급 한 유형이 실수 인 경우 새 세션을 시작하는 것이 가장 좋은 방법이라고 생각하지 않습니다. 나는 명령을 입력합니다

declare -p PATH

그런 다음 출력을 강조 표시하십시오. 그런 다음 다음 명령으로 텍스트를 잘라 붙여 넣을 수 있습니다. 리턴 키를 누르기 전에 다른 키를 사용하여 실수를 정정하십시오.

이 주제에 대한 자세한 내용은 bash 매뉴얼 페이지를 참조하십시오. 명령을 입력하십시오

man bash

또는 bash-GNU Bourne-Again SHell 사이트를 방문하십시오 .

편집에 대한 응답으로 :

예, 재부팅 할 때 PATH 변수에서 / test가 손실된다고 가정합니다. 이것이 파일에 export명령 을 넣어야하는 이유 ~./profile입니다.

원래 답변 :

때 혼란 것 ~/.bashrc, ~/.bash_profile그리고 ~/.profile파일을 실행합니다. 아마도 이것이 도움이 될 것입니다.

컴퓨터를 설정하는 방법은 다음과 같습니다. 나는 세 개의 파일이 있습니다 ~/.profile, ~/.bashrc하고 ~/.bashcm. 이 중 하나라도 누락 된 경우 만들 수 있습니다.

터미널 응용 프로그램을 시작하거나 메뉴 표시 줄의 “쉘”에서 “새 창”을 선택하면 대화식 bash 로그인 쉘이 호출됩니다. 이 쉘은 ~/.profile시작할 때 스크립트를 실행합니다 . 당신은 대체 할 수 있습니다 ~/.bash_profile또는 ~/.bash_login위해 ~./profile원하는 경우. 로그인 쉘이 아닌 대화식 bash 쉘이 시작되면 쉘은에서 명령을 읽고 실행합니다 ~/.bashrc. 의 목적은 ~/.bashcm모두 실행하는 일반적인 스크립트를 제공하는 것입니다 ~/.profile~/.bashrc.

다음은 .profile파일 의 예입니다

echo in .profile
source ~/.bashcm
export PATH=$PATH:~/bin
echo exit .profile

echo 명령의 목적은 스크립트가 실행될 때를 설명하는 것입니다. 편한 후에는 주석을 달거나 삭제할 수 있습니다. .profile파일은 실행 .bashcm스크립트가 다음 PATH 변수와 출구를 수정합니다. 예제 .bashcm파일은 아래와 같습니다.

echo in bashcm
PS1='\h:\W \u\$ '
alias home='cd ~'
echo exit .bashcm

echo 명령 이외의 .bashcm경우 프롬프트와 별명 만 설정합니다. .bashrc아래에 표시된 예제 파일은 단순히 .bashcm스크립트 를 실행합니다 . 다시 echo 명령은 설명을위한 것입니다.

echo in .bashrc
source ~/.bashcm
echo exit .bashrc

터미널 응용 프로그램을 시작하고 명령을 입력하면

echo $PATH
alias
bash
echo $PATH
alias

in the window, I get the following.

Last login: Wed May 27 14:48:19 on ttys000
in .profile
in bashcm
exit .bashcm
exit .profile
Steelhead:~ davidanderson$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/davidanderson/bin
Steelhead:~ davidanderson$ alias
alias home='cd ~'
Steelhead:~ davidanderson$ bash
in .bashrc
in bashcm
exit .bashcm
exit .bashrc
Steelhead:~ davidanderson$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/davidanderson/bin
Steelhead:~ davidanderson$ alias
alias home='cd ~'
Steelhead:~ davidanderson$