컴퓨터가 처음 시작될 때 Unix 경로를 설정하는 방법은 무엇입니까?

컴퓨터가 처음 시작될 때 Unix 경로를 설정하는 방법은 무엇입니까?

저는 Apple 컴퓨터를 사용합니다. 터미널을 열고 실행하면 echo $PATH환경에 현재 "PATH" 변수가 표시됩니다. 내 경로나 다른 환경 변수에 무언가를 추가하면 프로세스가 활성화되어 있는 동안에만 지속됩니다.

내가 알고 싶은 것은 이 경로가 기본값을 어떻게 얻느냐는 것입니다. .zshrc(또는 bash를 사용하는 경우 .bash*)를 살펴보았는데 경로의 모든 프로그램을 내보낼 수 있는 항목이 없습니다. 이 기본 목록을 제어하는 ​​운영 체제의 역할은 무엇입니까 PATH?

답변1

login(1)전통적으로 PATH셸에 항목을 넘기기 전에 설정하지만 OS X에서는 다르게 생각해야 할 수도 있습니다.~/.MacOSX/environment.plist이를 설정할 수 있는 곳은 어디입니까(일부 특수 응용 프로그램에서 요구하지 않는 한 권장되지 않음). 마지막으로 Apple이 path_helper(8)난독화 명령을 추가했는지 확인했습니다.PATHrc/etc

path_helperMac 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/profilerun 이 실행 /usr/libexec/path_helper되고 이 명령의 출력이 eval편집되어 경로의 초기 값이 설정됩니다. man path_helper프로그램이 출력을 넣을 초기 디렉터리 목록을 얻는 방법을 확인하세요 .

답변4

loginwindow.app사용자를 위한 초기 환경 설정을 담당합니다 . 인증 과정 에 전달되어 사용자가 인증되면 호출된 loginwindow.app것처럼 환경이 설정됩니다 (읽기 및 ). 이때 PATH는 커널에서 설정한 것과 동일하다 . 이것은 모두 루트에서 실행된다는 점을 언급해야 합니다. GUI 세션을 사용하는 경우 쉘이 없습니다.login -pf USERNAMEman loginman environ/usr/bin:/bin:/usr/sbin:/sbinuser.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 useto modify the PATH set by the

관련 정보