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도 선박 - 당신이 당신의 쉘 변경하는 경우 따라서, tcsh
및 zsh
예를 들어, -에 대한 변경 사항 /etc/bashrc
새 쉘에 적용되지 않습니다.
또한 /etc/paths
시스템 수준 구성 파일이며 ~/.bash_profile
사용자 별입니다. Mac에 대화 형 사용자가 여러 명 설정되어 있다면 /etc/paths
모든 사람에게 표시하고 싶지 않은 디렉토리를 추가 하지 않을 것입니다 PATH
. /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
는 변수 확장 과 따옴표를 구분 하여 셸이 올바르게 수행합니다.
FOO
명확성을 위해 여기 환경 변수를 사용하고 있습니다. 위에서 쓴 모든 것은 PATH
단지 다른 환경 변수이기 때문에 에도 적용됩니다 . 예제 텍스트는 훨씬 길어질 것입니다.
내보내기 경로는 무엇을 의미합니까? 우리는 언제 수출합니까?
위의 FOO
예에서 다른 프로그램을 실행하는 경우 FOO
변수가 내보내지지 않으므로 변수가 표시되지 않습니다. 그것은 하나의 쉘 인스턴스 안에 만 있습니다.
$ echo $FOO
bar
$ bash
$ echo $FOO
$ exit
$ export FOO
$ bash
$ echo $FOO
bar
내가 bash
이미 사용하고있는 쉘에서 처음으로 새 쉘을 실행하면 의 값을 표시하려고하면 하위 프로그램을 볼 수 있도록 내 보내지 않았 FOO
으므로 공백 FOO
이 표시됩니다. 그런 다음 두 번째 bash
인스턴스를 종료하고 내 보낸 다음 bash
다시 실행 하면 두 번째 인스턴스의 값이 표시 FOO
됩니다.
당신은 사용 export
이 쉘에서 설정 값을 볼 서브 프로그램을 할 때, 당신은 그렇게하지 않으려는 경우 사용하지 마십시오.
일반적으로 쉘 스크립트에서 임시 변수를 내 보내지 않습니다. 쉘 스크립트에서 프로그램이 실행되는 방식을 변경하지 않기 때문입니다.
나는 당신의 다른 질문에 대답하지 않을 것입니다. 한 번에 하나의 질문 만해야합니다. 나는 그들이 모호하게 관련되어 있기 때문에 이것에 대해서만 대답했습니다. 다른 모든 것은 별도의 질문에 속합니다.