zsh에서 어떻게 환경 변수를 설정하는지 알아봅시다. 이 글을 읽기 전에 profile에 대한 것을 읽고 오시면 좋습니다.

 

[관련글]

/etc/profile vs .profile의 차이는 무엇일까요?

 


 /etc/profile이 전역 설정과 관련된 것이니, 여기에 export CHO=3을 추가하고 source 명령으로 실행시켜 보겠습니다.

 

 export CHO=3은, CHO라는 환경 변수의 값을 3으로 등록한다는 의미입니다.

 

 그런데, source /etc/profile을 입력하니, 적용 되라는 환경 변수는 적용되지 않고, #만 주구장창 뜸을 알 수 있어요. 이게 무엇인지 잘 모르겠지만, 제대로 동작하지 않음은 분명해 보입니다.

 

 

 

 

 exit를 입력해서 빠져나오기는 했습니다만, 왠지 환경 변수가 제대로 등록되지 않았을 듯 합니다. 이것을 확인하는 가장 간단한 방법 중 하나는 echo $CHO를 하는 것입니다. 만약에 CHO가 등록이 되었다면, CHO의 값인 3이 출력이 될 것이고요. 그렇지 않으면, 아무 것도 출력이 되지 않을 겁니다.

 

 확인해 보니 아무것도 없네요.

 

 이는 /etc/profile과 .profile이 Bourne shell에 대한 프로필 파일이기 때문입니다. 흔히 말하는 bash와 같은 것들입니다.

 


 현재 쉘을 출력해 보겠습니다. echo $SHELL을 입력하시면 되는데요. /usr/bin/zsh로 뜨고 있습니다. zsh라는 것인데요. 이것에 대한 설정 파일들은 보통 /etc/zsh 안에 있습니다.

 

 이 위치로 들어가 보니, zlogin, zlogout, zprofile, zshenv, zshrc가 있는데요. 뭔가 관련된 설정 파일이 굉장히 많이 보입니다. 저는 여기서 zshrc 파일을 건드리겠습니다.

 

 zshrc 파일의 맨 밑에 export CHO=10을 넣어주세요. 그러면 이것은, CHO라는 환경 변수를 10으로 설정하겠다는 의미입니다.

 

 source /etc/zsh/zshrc를 실행시키고 난 다음에 echo $CHO를 입력해 보시면 아까와는 다르게 10이 출력됨을 알 수 있습니다. 전역 zsh 설정이 적용 되었다는 의미입니다.

 


 이제, 각 유저의 home 디렉토리에 있는 .zshrc에 대해서 알아봅시다.

 

 /etc/zsh/zshrc 파일을 보면, system-wide .zshrc라고 언급을 하는데요. 전역적 설정이라는 의미입니다. 전역의 반대는 지역입니다. 유저마다 각각의 개별 설정을 적용하는 파일이, 홈 디렉토리의 .zshrc다라는 것을 유추할 수 있어요.

 

 .zshrc 이 친구가 각 유저별로 환경 변수를 설정하는 데 매우 중요한 역할을 하는데요. oh-my-zsh로 터미널을 꾸밀 때를 생각해 봅시다. 우리는 ZSH의 테마를 설정해 주었습니다. 저는 agnoster를 주로 씁니다. 그런데 root의 ZSH 테마와, cho의 ZSH 테마를 다르게 설정해 주고 싶습니다.

 

 그러면 ZSH의 테마 속성이 개인화된 것입니다. 유저마다 개별 설정을 하게 되므로, 지역적인 설정을 하는 셈이 됩니다. root의 테마를 half-life로 바꿔주고 싶다면 어떻게 하면 될까요?

 

 root의 홈 디렉토리에 있는 .zshrc 파일의 ZSH_THEME를 "half-life"로 설정해 주시면 됩니다. cho의 zsh 테마를 agnoster 그대로 가지고 가고 싶다면, cho의 홈 디렉토리에 있는 .zshrc의 파일의 ZSH_THEME를 "agnoster"로 export 시켜주시면 되고요. 그렇게 하시면, 루트와 cho의 zsh 테마가 다르게 설정되게 됩니다.

 

 

 그러면 이것이 어떻게 설정되었는지 봅시다. 그럴려면, 각각의 홈 디렉토리로 가서 source .zshrc 명령어를 입력해 주시면 됩니다.

 

 보시면 테마가 다름을 한 눈에 알 수 있어요. echo $ZSH_THEME를 쳐 보면, 루트는 half-life이고, cho는 agnoster임을 알 수 있습니다. 즉, 개별화된 설정은 홈 디렉토리의 .zshrc로 하고, 전역 설정은 /etc/zsh 밑에 있는 zshrc 파일로 하면 됩니다.