11 10 2015
맥에서 zsh 사용하기
잡설: 4DOS
(이 부분은 정말로 관계없는 잡설이므로, 그냥 본론으로 건너뛰어도 상관없다-_-)
잠깐 딴 이야기를 시작해보자면, 십수년 전에 MS-DOS를 사용할 때에는 명령 쉘을 기본 제공되는 COMMAND.COM 대신에 JP Software의 4DOS를 사용했었다.
이건 물론 COMMAND.COM이 원체 구렸(…)고, 4DOS가 그런 기능적 부족함을 메꿔줬기 때문에 사용했던 것이지만, 개인적으로 그 중에서 제일 좋아했던 기능은 뭐니뭐니해도 파일의 종류에 따라 파일 목록을 컬러풀하게 보여주는 기능이었다.
물론 기본적으로 저렇게 나온다는건 아니고, 저렇게 표시를 하도록 설정을 미리 해줘야 하기는 하지만 그런 부분은 일단 넘어가도록 하자-_-;;;
어느 시점부터는 운영체제들이 점점 CLI를 버리고 GUI를 도입하면서 결국 4DOS도 쇠퇴하였고, JP Software는 GUI의 파일 관리자와 CLI를 조합한 Take Command라는 것을 개발해서 재기를 노리는 것 같지만 잘 안되는 것 같다(사실 그바닥에는 역사와 전통의 Total Commander라는 터줏대감이 버티고 있는데다가, 이녀석이 팬도 엄청나게 많아서…).
어차피 이제는 JP Software 홈페이지에서도 4DOS는 찾을 수 없으니, 굳이 궁금한 사람은 위키백과의 4DOS 항목을 참고하도록 하자.
그래도 4DOS.INFO라는 사이트에서 다운로드 가능한 4DOS 바이너리를 발견할 수 있으니 관심있는 사람은 참고하자. 도스 시절에 사용하던 프로그램이기 때문에 확장자가 .com 이라는게 사람에 따라서는 함정이라면 함정이지만 (…)
본론: zsh
4DOS 얘기를 하다 보니 잡설이 길어졌는데, 본론으로 돌아와서 맥의 Bash 쉘을 쓰면서 가장 아쉬웠던게 ls 실행시 단색으로 표시되는 파일 목록이었다.
그게 무슨 배부른 소리냐고 할지 모르겠지만, 사실 흑백으로 나오면 파일 구분하기가 정말 어렵다. 한 디렉토리 안에 파일이 10개 가량만 있어도 뭔가 헷갈리고, 특히 지금은 8.3 파일명의 시대가 아니기 때문에 파일명도 제법 길어서 더더욱 혼란스럽다. 이럴때 파일을 구분할 수 있는 색상만이라도 표시된다면 정말 구분하기 좋을 것이다.
사실 우분투 데스크톱은 터미널을 띄워서 ls 실행해보면 어느 정도 컬러를 입혀주는걸 봐서는 못하는건 아닌것도 싶다.
사실 우분투에서 ls의 결과로 나오는 목록은 파일 종류에 따른것이 아닌, 디렉토리/파일 구분에 따라서 색상을 입혀주는 것 같지만… 꿩 대신 닭이라고… 어쨌든…
그러다가 언젠가 페이스북에서 컬러풀한 터미널의 스크린샷을 보았던 기억이 나서, 적당히 인터넷을 검색해본 뒤 zsh를 사용해보게 되었다.
zsh는 Bash 쉘을 대체할 수 있는 쉘로써, 단순히 Command Line이 컬러풀하게 되는 것으로 끝(…)이 아니라 filename auto complete 및 arguments auto complete 등 Bash 쉘 이상으로 편리한 기능들도 들어있는 것 같다.
하지만 지금은 zsh에 어떤 기능이 있는지까지는 알아보지 않았고, 그저 파일 목록에 컬러를 입혀줬다는 것만으로도 만족하면서 쓰고 있고, 그 외에 와닿는 기능이 filename auto complete 기능이 있다. 이건 여기서는 생략.
zsh 설치 및 설정
아래 내용은 코딩 코리아(Coding Korea): zsh 갖고 놀기라는 웹문서를 참고했으며, 시스템에는 이미 홈브류가 설치되어 있다고 가정한다. 만약 홈브류가 설치되어 있지 않다면 Homebrew 홈페이지를 참고해서 홈브류를 설치하자.
사실, 굳이 zsh를 따로 설치하지 않더라도 맥에 이미 기본으로 zsh가 설치되어 있다고 하는데, 확인 결과 요세미티 기준으로 최신 버전이 아닌 5.0.5 버전이 설치되어 있다고 한다. 참고로 zsh의 최신 버전은 2015년 10월 10일 기준으로 5.1.5이다. 홈브류를 이용해서 새로이 zsh를 설치하자.
1 |
$ brew install zsh |
정상적으로 설치되었다면 /usr/local/Cellar/zsh/{version formula}
에 설치되고, /usr/local/bin/zsh
에 링크가 생성될 것이다. 링크가 생성되지 않았다면 Homebrew가 링크를 생성하지 못할때를 참고하자.
설치가 완료되었다면 vim 등의 편집기를 이용해서 /etc/shells
파일 가장 아래쪽에 zsh의 경로를 지정해주자. zsh의 경로는 위 설명대로 홈브류를 이용해서 설치했다면 /usr/local/bin/zsh
일 것이다.
1 |
$ sudo vi /etc/shells |
이것은 설치된 쉘의 목록을 시스템에게 알려주는 역할을 한다.
zsh의 경로를 추가해 주었다면 chsh 명령어로 기본 쉘을 변경한다.
1 |
$ chsh -s /usr/local/bin/zsh |
여기까지 진행되었으면 설치도 끝나고 기본쉘도 설치한 zsh로 변경했으니 그냥 사용해도 되겠지만, 실제로 zsh라고 입력해서 바로 실행해보면 환경설정을 하라는 안내 메시지가 표시된다. 여기서 바로 사용할 수는 없는 것 같고 환경설정을 해 줘야 하는 것 같은데, oh-my-zsh를 설치해서 바로 사용할 수 있다. oh-my-zsh는 커뮤니티 기반의 zsh 환경 관리 프레임워크(community-driven framework for managing your zsh configuration)라고 소개되어 있지만, 사용해본 느낌은 zsh 환경 설정의 프리셋 모음 같은 느낌이었다. 실제로도 zsh에 바로 적용해서 사용할 수 있는 환경설정 프리셋이 테마라는 이름으로 제공된다.
여하튼, 아래 명령어로 oh-my-zsh를 설치한다.
1 |
$ curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh |
설치가 완료되면 텍스트 아트로 만들어진 oh-my-zsh의 로고가 표시된다.
이렇게 oh-my-zsh의 설치가 완료되었다면, 홈 디렉토리에 자동 생성된 .zshrc 파일을 수정해주면 된다.
1 |
$ vi ~/.zshrc |
전부 살펴보고 자신에게 맞게 수정하면 좋겠지만 지금의 나에게는 그럴 시간은 딱히 없고(…) ZSH_THEME
부분만 고쳐서 사용했다. ZSH_THEME
는 oh-my-zsh에서 제공되는 컬러 테마 중 어떤 테마를 적용할 것인지 결정하는 것으로, 테마는 ~/.oh-my-zsh/theme
에 저장되어 있다. 각각의 테마들의 미리보기는 oh-my-zsh/themes에서 살펴볼 수 있다.
나는 참고했던 위 문서의 작성자와 동일하게 dpoggi 테마를 사용했다 사실은 테마 살펴보고 고르기도 귀찮았어 . 이 테마는 다른것보다도, 현재 경로가 git 저장소일 경우 git 저장소의 브랜치 정보와 commit해야 할 파일의 유무 여부를 프롬프트로 바로 알려주는게 굉장히 마음에 들었다. 이것이 zsh 자체의 기능인지 테마에서 제공되는 기능인지는 잘 모르겠지만, 아무렴 어때 (…)
마지막으로 zsh를 설치한 뒤의 터미널의 스크린샷. 실제로 파일이 종류별 컬러로 구분되지는 않았지만, 디렉토리만이라도 구분되니까… ;;; 맨 처음 터미널 스크린샷이랑 비교하면 이쪽이 더 눈에 잘 들어오는건 확실하다.
Homebrew가 링크를 생성하지 못할때 차차차 외전 단행본