티스토리 뷰

반응형

개인적인 기록용으로 남기는 글 이다.

 

본인은 mac의 기본 쉘을 zsh로 사용중이었다.

그러다 mac의 터미널을 예쁘게 꾸미고 싶어서 순정 터미널을 버리고 iterm2와 oh-my-zsh를 설치하여 터미널을 커스텀 했다.

 

그런데 oh-my-zsh를 설치했을때 zsh 쉘에 빼곡히 적어놨던 환경변수 설정들이 전부 날아갔다..(왜 날아갔는지 원인은 모른다..)

뭔가 모를 배신감으로 날아갔던 설정 중에 중요한거 몇개만 기억해내 bash 쉘로 옮겨 저장하는 객기를 부렸다.

그런데 적용이 안 된다.

 

당연하다.. iterm2의 기본 쉘을 zsh로 설정해 놨으니.. 객기를 인정하고 다시 zsh로 돌아왔다.(사실 쉘 이 잘못한건 없다..)

이 과정 중에 일어놨던 일과 쉘에 대해서 아래에 기록하도록 한다.


zsh 설치

zsh는 macOS가 10.15 catalina 버전 이상으로 설치됐으면 default로 설치되어 있다고 한다. 만약 설치되지 않았으면 설치를 해야한다.

brew install zsh

homebrew로 zsh를 설치하면 /usr/local/bin/zsh의 경로에 설치가 되며 MacOS가 이 경로를 인식하기 위해선

/etc/shells 파일에 /usr/local/bin/zsh 경로를 추가해줘야 한다고 한다.


zsh 설정

1. zsh 쉘 조회 하기

# 현재 사용중인 쉘 조회하기
echo $SHELL
# 또는
echo $0

# 현재 사용중인 zsh 쉘 설치 경로 모두 조회하기
which -a zsh

# 현재 사용중인 zsh 쉘 버전 조회하기
/bin/zsh --version
# 또는
/usr/local/bin/zsh --version


2. iterm2에서 기본 쉘 설정 변경하기(기본 쉘이 bash일 경우 실행하도록 한다)

chsh -s $(which zsh)

위 명령어를 입력한 뒤 iterm2를 껐다 켜줘야 설정이 완료된다. 만약 설정이 적용되지 않았으면 직접 iterm2 환경설정에서 설정해줘야한다. 

iTerm2 실행 > Preferences > Profiles > General > Command > 드롭다운 목록의 "Custom Shell" 선택 > zsh 입력

그래도 설정이 적용되지 않으면 재부팅을 해보자.


bash 쉘 vs zsh 쉘

우선 쉘은 개발자와 OS의 사이에 존재하는 인터페이스다. 백그라운드 처리, 입력 및 출력, aliashing, 각종 명령어 등 다양한 기능을 제공하여 개발자가 사용하기 편하게끔 편리를 제공한다. 쉘의 종류 중에는 bash, zsh 등이 있다.

 

bash 쉘은 출시된지 오래된 안정적인 Unix기반 쉘이다. 많은 Unix 시스템에서 기본 쉘로 사용된지 오래됐고 많은 Linux 환경에서 사용되고 있어 안정성을 보장할 수 있다. 

zsh는 bash의 기능을 확장해서 나온 Unix기반 쉘이다. 개발자가 편리한대로 커스터마이징을 쉽게 할 수있다는 것이 장점이다. bash의 상위버전인 zsh가 나오면서 애플에선 macOS를 제공할때 zsh을 포함하기로 했다.

 

둘다 같은 Unix 기반 쉘로 어떤 것을 사용하던 기본 기능을 사용하는 것에 어려움은 없다. 다만, zsh가 좀더 확장된 기능을 가지고 있기에 zsh를 사용하다가 bash를 사용하면 다소 불편할 수 있을 것이다. 실제로 bash 보다 zsh가 명령어를 수행하는 속도 측면에서 다소 우세하다고 한다. (엄청나게 속도차이가 큰 것은 아니다.)


iterm2에서 bash 쉘 사용 경험담

zsh에 적어놨던 환경설정이 날아갔다.. 지금 생각해보면 왜 그랬는지 모르겠지만 bash 쉘로 옮겼다. iterm2 터미널에서 vi 편집기로 bash_profile을 수정했다. 매우 기본적인 JAVA_HOME 설정부터 적용하고자 Path 경로를 저장하고 source 명령어로 파일을 적용하고자 했다.

 

안 된다.

 

iterm2의 기본 쉘 설정이 zsh로 설정되어 있기 때문이다. 기본 설정이 zsh로 되어 있는데 bash 설정을 을 적용하고자 하니 zsh에서 bash_profile 을 싱크하지 못하기 때문에 안 된다고 한다. 

하지만 zsh에서 bash_profile을 적용할 수 있는 방법이 한가지 있다. 그건 zsh 쉘에서 강제로 bash 파일을 저장하도록 소스를 넣는 것이다.

 

1. zshrc 파일을 연다.

vi ~/.zshrc

 

2. zshrc 파일의 맨 아래에서 밑의 명령어 줄을 추가한 뒤 :wq로 저장한다.

source ~/.bash_profile
# 또는
source /Users/jerry/.bash_profile

3. 그 다음 설정이 잘 적용되었는지 확인한다. java 버전을 확인해보니 잘 변경되어 있다.

 

이후로는 iterm2 터미널을 실행할때마다 bash_profile 환경설정을 적용할 것이다. 이 방법은 매우 빠르게 bash 설정을 zsh로 적용할 수있는 방법이다. 하지만 좀더 알아보니 이 방법은 위험성이 매우 크다고 한다. bash와 zsh는 비슷한 기능을 제공하지만 엄연히 다른 쉘이기에 zsh에서 bash를 적용하고자 할때 싱크 충돌이 일어날 수 있다고 한다. 서로 돌아가는 시스템 구조가 다르기에 zshrc 파일이 손상될 위험이 높아진다고 한다.

 

결론은 zsh를 기본 쉘로 사용할거면 bash_profile 파일에 적힌 내용을 복사해 zshrc 파일로 그대로 옮겨야한다.

cat ~/.bash_profile >> ~/.zshrc

 

기본 설정 하나하나에도 의미가 있었다. 그냥 처음부터 사용하던걸 쓰면되는데 이상한 걸로 고민한거 같다.. 

 

 

 

 

Reference

 

반응형
댓글
공지사항