ZSH의 PATH 변수에 새 항목 추가


188

zsh를 사용 /home/david/pear/bin하고 있으며 PATH변수에 새 항목 ( )을 추가하려고 하지만 방법을 모르겠습니다.

나를 가장 혼란스럽게하는 것은 PATH~/.zshrc파일에 변수에 대한 단일 참조가 없지만 echo $PATH반환을 수행한다는 것입니다 .

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

그래서 PATH변수가 어딘가에 설정되고 있습니다.

답변:


211

여기 에이 줄을 추가하십시오 .zshrc:

export PATH=/home/david/pear/bin:$PATH

편집 : 이것은 작동하지만 ZSH 가와 같은 변수를 제공하는 구조적 인터페이스를 활용하기 때문에 아래 의 ony의 대답 이 더 좋습니다 $PATH. 이 접근법은 표준 bash이지만, 아는 한 ZSH가 더 나은 대안을 제공 할 때 사용할 이유가 없습니다.


29
하하 그것을 잊어 버렸습니다. 콘솔 명령 일 뿐이지 만 .zshrc에 해당 줄을 추가하면 트릭을 얻었습니다. 고마워요!
David Barreto

1
내 .zshrc에는 이미 PATH 내보내기 행이 있으므로 수정 된 것으로 바꿨습니다.
Zack Huston

6
나는 항목 주위에 따옴표가, 즉 제거해야 PATH="/home/david/pear/bin:/usr/bin:etc"으로 PATH=/home/david/pear/bin:/usr/bin:etc는 zshrc를 유지하기.
a7omiton 2019

3
@taco, 당신은 $ HOME을 사용할 수 있습니다
mencargo

1
@DanielSpringer : 그렇습니다. 쉘을 열면 쉘 PATH이 시작된 상위 프로세스에서 상속 된 다음 실행될 때 .zshrc( .bashrc또는 기타) 해당 경로에 추가 항목을 추가 할 수 있습니다.
Linuxios

222

실제로 ZSH를 사용하면 환경 변수의 특수 매핑을 사용할 수 있습니다. 그래서 당신은 간단하게 할 수 있습니다 :

# append
path+=('/home/david/pear/bin')
# or prepend
path=('/home/david/pear/bin' $path)
# export to sub-processes (make it inherited by child processes)
export PATH

저에게는 다른 변수로 전파 될 수있는 매우 깔끔한 기능입니다. 예:

typeset -T LD_LIBRARY_PATH ld_library_path :

16
좋은 대답입니다. 내 경우에는 ~/.zshrc을 소스로 하여의 .profile모든 내용을 덮어 씁니다 .profile. 머리를 잡아 당기는 동안 잠시 걸렸습니다.
Khanh Nguyen

1
추가 요소는 둘 이상의 요소를 추가하지 않는 한 괄호가 필요하지 않습니다. 또한 종종 따옴표가 필요하지 않습니다. 간단하고 간단한 방법은
Micah Elliott

1
@SuperUberDuper, 거의 모든 유닉스 쉘은 단순히 대화식으로 쉘에 입력하는 것과 거의 동일한 시작 파일을 읽는다는 것을 이해해야합니다. "RC"파일에 대해서 당신이 흥미 답을 찾을 수있는 이 질문
ONY

6
를 사용하여 명시 적으로 내보내기를 피하고 -x변수에 고유 한 값만 남겨 둘 -U수 있습니다. 콜론은 기본적으로 가정되므로 다음과 같습니다.typeset -TUx PATH path
Grief

2
@DanielSpringer, 아니. 당신이 그 용어로 그것을 원한다면 path=(...)(참조 $path또는 $PATH내부 없이 ) 할당하고, path=(... $path)추가하고 path+(...)추가합니다.
ony

40

PATH최소한의 방식으로 추가 할 수 있습니다 . 요소를 두 개 이상 추가하지 않으면 괄호가 필요하지 않습니다. 또한 일반적으로 따옴표가 필요하지 않습니다. 따라서 간단하고 짧은 추가 방법 은 다음과 같습니다.

path+=/some/new/bin/dir

일반적인 사용법

그런 다음 새 스크립트 / 실행 파일을 테스트하기위한 공통 패턴은 다음과 같습니다.

path+=$PWD/.
# or
path+=$PWD/bin

이 소문자 구문은 배열path 로 사용 되지만 대문자 파트너에 영향을 미칩니다 (이를 통해 "바운드" ).PATHtypeset

( 세퍼레이터로 필요하거나 원하지 않음에 유의하십시오: .)

관련 음식

path이 방법을 (배열로) 처리 하면 새로 경로 지정된 명령을 찾기 위해 수행 할 필요가 없습니다 rehash .

또한 vared path동적으로 편집path 하고 다른 것들을 살펴보십시오 .

path이 질문 에만 관심이있을 수 있지만 내보내기 및 배열에 대해 이야기하고 있으므로 일반적으로 배열을 내보낼 수 없습니다.

중복 된 항목을 가져 가지 못하게PATH 할 수도 있습니다 ( thisthis 참조 ).

typeset -U path

'path + = : / foo / bar'가 아니어야합니까? (콜론으로)
Andrew lorien

1
@andrewlorien 콜론 구분 기호에 대한 세부 정보로 답변을 업데이트했습니다.
Micah Elliott

경로 뒤에 주석이 있으면 다음과 같이 따옴표가 필요합니다 path+='my/path' # for fun. 공백이 있으면 분명하지만 주석이 있으면 그렇게 많이하지 않습니다.
Franklin Yu

"(: 구분 기호로 필요하지 않음 :주의하십시오." "이것은 소문자에만 해당됩니다 path. .zshrc:PATHPATH+=:/Users/path/to/my/folder
Emmett R.

37

~/.zshrc파일 을 열지 않고 하나의 라이너

echo -n 'export PATH=~/bin:$PATH' >> ~/.zshrc

또는

echo -n 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc

효과를 보려면 source ~/.zshrc동일한 탭에서 수행하거나 새 탭을여십시오.


1
Zsh 셸을 사용하여 OSX에서 완벽하게 작동했습니다.
Stryker

1
매력처럼 일했다!
Akbar Sha Ebrahim 6

14
  1. ~ / .zshrc에 경로 추가

    sudo vi ~/.zshrc

    새로운 길 추가

    export PATH="$PATH:[NEW_DIRECTORY]/bin"
  2. ~ / .zshrc 업데이트

    ~ / .zshrc 저장

    source ~/.zshrc

  3. PATH 확인

    echo $PATH


2
이것이 Bash방법입니다.
CousinCocaine

13

옵션 1 : ~ / .zshrc에 다음 행을 추가하십시오.

export "PATH=$HOME/pear/bin:$PATH"

그런 source ~/.zshrc다음 변경 사항을 적용하거나이 창을 닫고 새 창을 열려면 실행해야합니다.

옵션 2 : 터미널 콘솔 내에서 실행하여이 경로를 현재 터미널 창 세션에만 추가하십시오. 창 / 세션을 닫으면 손실됩니다.


이 답변이 5 년 전 게시 된 동일한 답변과 어떻게 다른지 자세히 설명해 주 시겠습니까?
Franklin Yu

이 답변에서는 파일 에이 코드 줄을 추가해야한다고 말하지 않습니다. 단지 현재 창에서만 변경되는 것처럼 실행하면 원래 답변에서는 설명되지 않습니다.
Dimitar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.