저는 Apple 컴퓨터를 사용합니다. 터미널을 열고 실행하면 echo $PATH
환경에 현재 "PATH" 변수가 표시됩니다. 내 경로나 다른 환경 변수에 무언가를 추가하면 프로세스가 활성화되어 있는 동안에만 지속됩니다.
내가 알고 싶은 것은 이 경로가 기본값을 어떻게 얻느냐는 것입니다. .zshrc(또는 bash를 사용하는 경우 .bash*)를 살펴보았는데 경로의 모든 프로그램을 내보낼 수 있는 항목이 없습니다. 이 기본 목록을 제어하는 운영 체제의 역할은 무엇입니까 PATH
?
답변1
login(1)
전통적으로 PATH
셸에 항목을 넘기기 전에 설정하지만 OS X에서는 다르게 생각해야 할 수도 있습니다.~/.MacOSX/environment.plist
이를 설정할 수 있는 곳은 어디입니까(일부 특수 응용 프로그램에서 요구하지 않는 한 권장되지 않음). 마지막으로 Apple이 path_helper(8)
난독화 명령을 추가했는지 확인했습니다.PATH
rc
/etc
path_helper
Mac OS XI의 ZSH의 경우 다음에서 비활성화 하고 수동으로 설정하세요.PATH
내 ~/.zshenv
파일. 설정한 경로에서 실제로 어떤 작업을 수행해야 하는 경우 이는 이상적이지 않을 수 있습니다 path_helper
.
답변2
@corleone이 게시한 링크는 $PATH 환경 변수를 해석하는 방법을 보여줍니다.
터미널에서 선언할 때 지속되지 않는 이유는 결국 종료되는 임시 프로세스이기 때문입니다. 이 변수는 셸을 시작할 때 얻은 파일(일반적으로 도트 파일 중 하나)에서 설정해야 합니다.
많은 운영 체제와 달리 OS는
특정 디렉토리를 포함하도록 $PATH를 업데이트하려는 경우 이를 배치하는 가장 좋은 위치(OS X에서)는 .bash_profile에 있으며 이는 해당 특정 변수를 설정하는 다른 모든 위치보다 우선합니다. 아무것도 덮어쓰지 않고 그냥 추가하고 싶다면 .bash_profile에 다음과 같은 줄을 추가할 수 있습니다.
PATH="$PATH:/path/to/another/bin"
답변3
셸이 시작되면 /etc/profile
run 이 실행 /usr/libexec/path_helper
되고 이 명령의 출력이 eval
편집되어 경로의 초기 값이 설정됩니다. man path_helper
프로그램이 출력을 넣을 초기 디렉터리 목록을 얻는 방법을 확인하세요 .
답변4
loginwindow.app
사용자를 위한 초기 환경 설정을 담당합니다 . 인증 과정 에 전달되어 사용자가 인증되면 호출된 loginwindow.app
것처럼 환경이 설정됩니다 (읽기 및 ). 이때 PATH는 커널에서 설정한 것과 동일하다 . 이것은 모두 루트에서 실행된다는 점을 언급해야 합니다. GUI 세션을 사용하는 경우 쉘이 없습니다.login -pf USERNAME
man login
man environ
/usr/bin:/bin:/usr/sbin:/sbin
user.cs_path = /usr/bin:/bin:/usr/sbin:/sbin
기본적으로 Terminal.app은 셸을 로그인 셸로 시작합니다. login -pf USERNAME
(루트로) 실행하고 쉘의 rc 파일을 읽으십시오. zsh /private/etc/zshenv csh /private/etc/csh.login / usr bash
/ libexec/path_helper loginwindow.app` 의 경우 .ksh
/private/etc/profile is read. For
,
is read. For
,
is read. All use
to modify the PATH set by the