$PATH 중복된 질문입니다.

$PATH 중복된 질문입니다.

이렇게 하면 echo $PATH다음과 같은 결과를 얻습니다.

/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/local/share/npm/bin:/usr/local/share/python:/opt/X11/bin :/Users/kh/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

이것은 내 ~/.zshrc 파일에 있습니다.

내보내기 경로=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/local/share/npm/bin:/usr/local/share/python:/opt/ X11/bin:$HOME/.rvm/bin:$PATH

homebrew가 불평하기 때문에 이 파일 앞에 /usr/local/etc...를 수동으로 추가해야 했습니다.

$PATH가 빌드된 위치를 찾기 위해 가능한 모든 파일(내가 알고 있는)을 검색했습니다. 그러나 아무 소용이 없습니다. 이것들은 모두

~/.bash_profile
~/.bashrc
~/.profile

어떤 제안이라도.

답변1

/etc/paths기본 경로는 macOS에서 정의됩니다. 하위 프로세스가 환경 변수를 상속하고 /usr/bin/이를 환경 변수에 명시적으로 설정하므로 $PATH항목이 중복됩니다.

중복 항목을 제거하려면 다음을 사용할 수 있습니다.

typeset -U PATH

위 명령의 결과는 다음과 같습니다.첫 번째값에 지정된 디렉터리 경로의 인스턴스 $PATH는 유지되며 향후 중복 항목은 자동으로 제거됩니다. 이 효과는 현재 셸 세션 전체에서 지속되므로 새로운 중복 항목이 변수에 추가되는 것을 방지합니다.

답변2

어떤 다른 파일이 귀하의 파일을 설정하고 있는지 모르겠지만 $PATH중복된 항목은 다음과 같습니다.

/opt/X11/bin
/usr/bin
/usr/local/bin
/usr/sbin

이들 모두는 이미 귀하의 에 설정되어 있으므로 ~/.zshrc귀하가 해야 할 일은 거기에 설정하지 않는 것뿐입니다. 어쨌든 이는 기본값이어야 하며 $PATH추가할 필요가 없습니다. 대부분의 시스템에는 $PATH기본적으로 이러한 디렉터리가 포함되어 있으므로 ~/.zshrc사용자 파일에 콘텐츠를 추가하면 비표준 디렉터리만 추가할 수 있습니다.

$PATH진술을 다음으로 변경하십시오 .

내보내기 경로=/usr/local/sbin:/usr/local/share/npm/bin:/usr/local/share/python:$HOME/.rvm/bin:$PATH

답변3

~에 따르면ZSH 매뉴얼 페이지:

파일 시작/닫기

먼저 /etc/zshenv에서 명령을 읽습니다. 이는 재정의될 수 없습니다. 후속 동작은 RCS 및 GLOBAL_RCS 옵션에 의해 수정됩니다. 전자는 모든 시작 파일에 영향을 미치는 반면, 두 번째 동작은 전역 시작 파일에만 영향을 미칩니다(여기에 표시된 경로는 /로 시작함). 언제든지 이러한 옵션 중 하나가 설정되지 않으면 해당 유형의 후속 시작 파일을 읽을 수 없습니다. $ZDOTDIR의 파일은 GLOBAL_RCS를 다시 활성화할 수도 있습니다. RCS와 GLOBAL_RCS는 모두 기본적으로 설정됩니다.

그런 다음 $ZDOTDIR/.zshenv에서 명령을 읽으십시오. 쉘이 로그인 쉘인 경우 /etc/zprofile에서 읽은 다음 $ZDOTDIR/.zprofile에서 명령을 읽습니다. 그런 다음 셸이 대화형이면 먼저 /etc/zshrc에서 명령을 읽은 다음 $ZDOTDIR/.zshrc에서 읽습니다. 마지막으로, 쉘이 로그인 쉘이면 /etc/zlogin 및 $ZDOTDIR/.zlogin을 읽습니다.

따라서 다음 사항을 확인해볼 수 있습니다.

/etc/zshenv
/etc/zshrc
/etc/zlogin

그리고 그들이 우연히 획득한 모든 문서. OS X를 사용하고 있으므로 다음과 같은 내용을 찾을 수 있습니다.

if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi

그 중에 따르면path_helper 매뉴얼 페이지, 다음 사항도 살펴보겠습니다.

/etc/paths
/etc/paths.d/*

답변4

다음 구문을 사용하여 PATH에 추가 경로를 설정할 수 있습니다.

PATH=$PATH:/additonally_location

그래서 PATH는 중복되지 않는다고 생각합니다.

관련 정보