나는을 좋아 zsh
하지만 내 $PATH
및 기타 변수 주장을 어디에 배치해야할지 모르겠 습니까? 나는 그들이 파일 사이에 흩어져 .zshrc
.zprofile
.bashrc
.bash_profile
있고 때로는 두 배가 되는 것을 발견했습니다 .
나는 안에 아무것도 가진 것을 깨닫게 bash
파일 것은 내가 사용으로 보는 많은 이해가되지 않습니다 zsh
,하지만 정확히 어디에 내 배치되어야한다 rvm
, python
, node
제에 등 추가를 $PATH
?
내가 (즉, 사용되어야 할 특정 파일이 있나요 .zshenv
않는 되지 현재 내 설치에 존재), 나는 현재 사용하고있는 사람 중 하나, 또는 심지어 중요합니까?
답변
tl; dr 버전 : 사용 ~/.zshrc
~/.zshrc
,~/.zshenv
및~/.zprofile
.
내 의견에 대해
kev가 준 답변에 첨부 된 내 의견에서 다음 과 같이 말했습니다.
이것은 잘못된 것 같습니다-/ etc / profile은 내가 찾을 수있는 zsh 문서에 나열되어 있지 않습니다.
이는 부분적으로 잘못된 것으로 판명 되었습니다 . 에서 제공 /etc/profile
할 수 있습니다 zsh
. 그러나 이것은 zsh
” sh
또는 ksh
“으로 호출되는 경우에만 발생합니다 . 다음 호환성 모드에서 :
일반적인 zsh 시작 / 종료 스크립트는 실행되지 않습니다. 로그인 쉘 소스 / etc / profile 뒤에 $ HOME / .profile이 있습니다. ENV 환경 변수가 호출시 설정된 경우 $ ENV는 프로필 스크립트 다음에 제공됩니다. ENV의 값은 경로 이름으로 해석되기 전에 매개 변수 확장, 명령 대체 및 산술 확장의 영향을받습니다. [ man zshall, “호환성” ].
ArchWiki zsh을 링크는 말합니다 :
로그인시 Zsh는 다음 파일을 다음 순서로 제공합니다.
/ etc / profile
이 파일은 로그인시 모든 Bourne 호환 쉘에서 제공됩니다.
이 implys /etc/profile
되어 항상 읽을 으로 zsh
로그인 할 때 – 나는 아치 리눅스 프로젝트에 경험이 없어; 위키가 해당 배포판에 맞을 수 있지만 일반적으로 올바르지 않습니다 . zsh 매뉴얼 페이지에 비해 정보 가 정확하지 않으며 OS X의 zsh에 적용되지 않는 것 같습니다 ( $PATH
set in 경로 /etc/profile
가 내 zsh 세션으로 연결되지 않음).
질문을 해결하려면 :
내 $ PATH에 내 rvm, python, node 등을 정확히 어디에 추가해야합니까?
일반적으로, 나는 나의를 내보낼 것 $PATH
에서 ~/.zshrc
, 그러나의 읽기 가진 그것의 가치 zshall의 맨 페이지를, 특히 “시작 / 종료 FILES”절 – ~/.zshrc
에 대해 읽어 상호 작용 또는 필요에 따라하지 않을 수도 있습니다 쉘, – 당신이 원하는 경우 $PATH
에 대한 zsh
사용자가 호출 한 모든 쉘 (둘 다 interactive
및 아님, 둘 다 login
및 아님 등) ~/.zshenv
이 더 나은 옵션입니다.
내가 사용해야하는 특정 파일 (예 : 현재 설치에없는 .zshenv), 현재 사용중인 파일 중 하나가 있습니까, 아니면 중요합니까?
시작시 읽을 수있는 파일이 많고 (링크 된 man
페이지 확인 ) 그 이유가 있습니다. 각 파일에는 특정 위치 (모든 사용자 설정, 사용자 별 설정, 로그인 셸 설정, 모든 셸 설정, 기타).
존재하지 않는 것에 대해 걱정하지 마십시오. ~/.zshenv
필요한 경우 작성하면 읽을 수 있습니다.
.bashrc
하고 .bash_profile
있습니다 하지 읽을 zsh
명시 적으로 그들을 소스하지 않는 한, ~/.zshrc
또는 유사한; bash
와 사이의 구문 zsh
이 항상 호환되는 것은 아닙니다 . .bashrc
및 둘 다 설정이 아닌 설정을 .bash_profile
위해 설계되었습니다 .bash
zsh
답변
다음은 STARTUP / SHUTDOWN FILES 섹션에있는 zsh man 페이지의 문서입니다.
Commands are first read from /etc/zshenv this cannot be overridden.
Subsequent behaviour is modified by the RCS and GLOBAL_RCS options; the
former affects all startup files, while the second only affects global
startup files (those shown here with an path starting with a /). If
one of the options is unset at any point, any subsequent startup
file(s) of the corresponding type will not be read. It is also possi-
ble for a file in $ZDOTDIR to re-enable GLOBAL_RCS. Both RCS and
GLOBAL_RCS are set by default.
Commands are then read from $ZDOTDIR/.zshenv. If the shell is a login
shell, commands are read from /etc/zprofile and then $ZDOTDIR/.zpro-
file. Then, if the shell is interactive, commands are read from
/etc/zshrc and then $ZDOTDIR/.zshrc. Finally, if the shell is a login
shell, /etc/zlogin and $ZDOTDIR/.zlogin are read.
이것에서 우리는 읽은 순서 파일을 볼 수 있습니다 :
/etc/zshenv # Read for every shell
~/.zshenv # Read for every shell except ones started with -f
/etc/zprofile # Global config for login shells, read before zshrc
~/.zprofile # User config for login shells
/etc/zshrc # Global config for interactive shells
~/.zshrc # User config for interactive shells
/etc/zlogin # Global config for login shells, read after zshrc
~/.zlogin # User config for login shells
~/.zlogout # User config for login shells, read upon logout
/etc/zlogout # Global config for login shells, read after user logout file
여기에서 자세한 정보를 얻을 수 있습니다 .
답변
비슷한 문제가 발생했습니다 (bash 터미널 명령이 올바르게 작동했지만 zsh에서 명령을 찾을 수 없음 오류가 표시됨)
해결책:
이전에 ~ / .bashrc에 붙여 넣은 내용을 다음 위치에 붙여 넣으십시오.
~/.zshrc