맥북 터미널 zsh 셋업

John Yoon·2023년 8월 30일
0

저는 현재 Intel 맥북 프로 16인치 2019년형 모델을 사용중인데 사용하다보니 쓸대없는 데이터들과 이것저것 막무가내로 다운로드하다 보니 소프트웨어끼리 서로 충돌도 일어나고 점점 느려져서 싹다 포멧한 후 입니다...

살짝 충동적인 포멧이여서 그런지 제가 예전에 쓰던 터미널 셋업을 다 까먹어서 다시 찾아보니까 그냥 이곳에 적어두면 나중에 다시 쓸 일이 있지 않을까 해서 끄적여 봅니다.

맥북 터미널에서 사용하는 터미널은 zsh 이라는 쉘을 사용하는데 오묘하게 bash 랑 비슷한듯 다르더라고요.

설정파일 실행 순서

맨 먼저, 터미널이 열리고 zsh 이 실행되면 가장 먼저 /etc/zshenv 파일 안에 있는 내용이 실행됩니다 (파일이 존재하는 경우에만). 근데 맥북에서는 기본적으로 저 파일이 존재하지 않더라고요.

그 다음으론 ${ZDOTDIR}/.zshenv 라는 파일이 실행 되는데 여기서 ${ZDOTDIR} 이라는 쉘 변수는 아무것도 지정되있지 않을 시 ${HOME}(홈디렉토리) 로 대체됩니다.

만약 내가 모든 쉘 설정파일들을 한곳으로 모아두고 싶다 하시는 분들은 새로운 디렉토리 하나 만드신 다음 ZDOTDIR 이라는 쉘 변수를 위의 /etc/zshenv 그 디렉토리 경로로 설정해주면 됩니다.

근데 솔직히 저는 굳이 다른 위치에 설정파일들을 모아둬야 하나 싶어서 안 만들었습니다ㅋㅋ

이 후, /etc/zprofile 이라는 설정파일이 자동으로 실행 되는데 애플에선 이미 이 설정파일을 사용중이고 유저가 못 수정하게 막아 뒀더군요. 살펴보니까 /usr/libexec/path_helper 라는 프로그램을 실행하는데 그냥 기본 환경변수 설정하는 프로그램이더군요. 어차피 수정도 못하니까 놔 둡시다.

그리곤 ${ZDOTDIR}/.zprofile 이라는 설정파일이 실행 되는데 여기다가 우리가 원하는 명령어들을 나중에 적어두면 유용합니다.

그 다음으로 실행되는것은 /etc/zshrc 파일인데 이 파일은 만약 쉘이 interactive 일때만 실행됩니다. 여기서 interactive 라는 말은 유저가 쉘에 직접 명령어를 칠 수 있다면 interactive 입니다. 만약 쉘파일 처럼 그냥 지정된 행동만 하는 쉘은 non-interactive shell 로 /etc/zshrc 가 실행 되지 않아요. 여튼, 이 파일도 맥에서 이미 사용하고 있는 파일로 살펴보니 우리가 터미널을 사용할때 필요한 인코딩설정, 키바인딩설정, 명령어 prompt 디스플레이 설정들을 실행 시키더군요. 어차피 이것도 수정 못합니다. 무시해 주세요.

이후에 실행되는 ${ZDOTDIR}/.zshrc 파일은 우리가 직접 설정 가능한 파일입니다. 이것도 나중에 직접 설정해 줍시다.

마지막으로 쉘에 로그인 될때 사용되는 /etc/zlogin, ${ZDOTDIR}/.zlogin.
쉘에서 나갈때 사용되는 /etc/zlogout, ${ZDOTDIR}/.zlogout 이 존재합니다.

요약하자면, 실행순서는 다음과 같아요:
1. /etc/zshenv : zsh 쉘 관련 환경변수 설정하는 곳
2. ${ZDOTDIR}/.zshenv : 유저가 환경변수 설정하는 곳
3. /etc/zprofile : (수정불가) 맥 전용 설정 파일
4. ${ZDOTDIR}/.zprofile: 유저가 터미널 열때 딱 한번 실행하는 곳
5. /etc/zshrc: (수정불가) 맥 전용 설정 파일
6. ${ZDOTDIR}/.zshrc: 유저가 새로운 쉘을 열때마다 실행되는 곳
7. /etc/zlogin: 로그인 됐을때 실행 되는 곳 (전역 설정)
8. ${ZDOTDIR}/.zlogin: 로그인 됐을때 실행 되는 곳 (유저 설정)
9. /etc/zlogout: 로그아웃 됐을때 실행 되는 곳 (전역 설정)
10. ${ZDOTDIR}/.zlogout: 로그아웃 됐을때 실행 되는 곳 (유저 설정)

보통 /etc 위치에 있는 설정파일들은 전역 설정들이고, ${ZDOTDIR} 에 있는 설정파일들은 특정 유저들의 설정들을 담아두는 곳이라고 보면 될듯 하네요.

0개의 댓글