Linux에 zshell 및 oh-my-zsh로 Theme 변경하기

   Apple은 OSX 기본 쉘을 bash 에서 zsh 로 macOS Catalina(ver.10.15 2019년 10월)부터 적용하기 시작했다.   보기에도 좋고 기능도 좋아서 바꾼줄 알겠지만 실상은 bash 의 라이센스 문제가 있기 때문이었다.   bash의 최신 버전은 GPLv3 라는 라이센스를 따르는데 애플은 해당 라이센스를 OSX에 포함시키는걸 꺼려했다.   그래서 선택된 것이 zsh 이다.   zsh는 MIT 라이센스를 따르고 있었기에 이러한 문제에서 자유로웠던 것이다.   덤으로 현대적인 기능과 확장성이 따라왔으니 일거양득이었던 셈이다.   어쨌뜬 평소 zsh 쉘을 사용하다가 Linux 기본 쉘인 bash를 사용하려니 뭔가 구시대적인 느낌이고 쉘 자체의 테마도 마음에 들지 않는다.   이번에는 Linux에 zsh 쉘을 설치하는 과정을 포스팅 하도록 하겠다.

   zsh 는 z shell 의 약자로 기존의 쉘(bash, ksh, tcsh)에 있던 유용한 기능을 한군데 모아둔 통합 쉘이다.   zsh 쉘의 모양이 어떻게 다르고 oh-my-zsh가 어떤건지 보려면 공식 사이트에 가면 쉽게 알 수 있다.
https://ohmyz.sh/

 

Oh My Zsh - a delightful & open source framework for Zsh

Oh My Zsh is a delightful, open source, community-driven framework for managing your Zsh configuration. It comes bundled with hundresd of helpful functions, plugins, themes, and a few things that make you shout... OH MY ZSH!

ohmyz.sh

   말보다는 실습으로 진행하는게 빠르고 글보다는 그림으로 보는게 빠르니 설치 과정을 알아보겠다.

sudo su -
yum list zsh
yum -y install zsh

   yum을 통해서 zsh 가 설치 가능한지 list를 확인하고 install 을 진행했다.

zsh --version
chsh -s /usr/bin/zsh
echo $SHELL
exit
sudo su -
echo $SHELL

   설치된 zsh 의 version 을 확인하고 기본 쉘을 zsh로 변경한다.  기본쉘이 적용된 것을 확인하기 위해서 $SHELL을 출력해보니 현재 세션에서는 적용되지 않아서 /bin/bash 상태인 것을 볼 수 있다.   앞서 su로 root 계정 사용상태이니 exit로 로그아웃하고 다시 root로 로그인을 해보자.   그러면 echo $SHELL 에서 기본 쉘이 /usr/bin/zsh 로 변경되어 적용된 것을 확인 할 수 있다.

   쉘은 설치 적용이 완료 되었으니 이제 칼라 테마를 위해서 oh-my-zsh 를 설치해야 하는데 oh-my-zsh는 git이 설치되어 있어야 설치가 가능하다.   Linux 설치 후에 별도로 git을 설치 하지 않았다면 설치해 준다.

[ git이 설치 되어 있지 않아서 발생한 오류 ]

yum list git
yum -y install git
git --version

   yum을 통해서 git을 설치할 수 있는 패키지가 있는지 확인하고 설치를 진행했다.   설치 후 설치된 git의 버전까지 확인 한다.
   이제 oh-my-zsh를 설치해 보자 설치하는 방법은 curl 을 이용하는 방법과 wget을 이용하는 방법 두가지가 있다.

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

   어떤 방법을 쓰던 상관없다. 

   oh-my-zsh 가 설치 되었다.   이제 oh-my-zsh 를 설치 했으니 그 기능을 활용해서 shell 을 내가 쓰기 편한 상태로 꾸며자.   이 부분에서는 개인 취향이니 각자의 선택에 따라서 설치/설정 하면 된다.

   우선 테마부터 바꿔보자.   내가 선호하는 테마는 "agnoster"이다.   테마파일을 먼저 다운로드 받자.
https://github.com/agnoster/agnoster-zsh-theme

 

GitHub - agnoster/agnoster-zsh-theme: A ZSH theme designed to disclose information contextually, with a powerline aesthetic

A ZSH theme designed to disclose information contextually, with a powerline aesthetic - agnoster/agnoster-zsh-theme

github.com

   글을 읽어보니 OSX와는 달리 Powerline fonts가 먼저 설치 되어 있어야 한다고 한다.   쉽게 설치 될 줄 알았는데 Rocky Linux의 기본 패키지 저장소에는 포함되지 않은 듯 하다.

   자동으로 받을 수 없다면 수동으로 설치해주면 된다.

git clone https://github.com/powerline/fonts.git --depth=1
cd fonts
./install.sh
cd ..
rm -rf fonts

   GitHub에서 Powerline Font를 클론시키고 클론한 위치로 이동해서 설치 스크립트를 실행 후 클론 제거하는 Command 이다.   이제 다시 agnoster THEME 설치로 돌아가자.
   curl을 이용해서 테마 파일을 다운로드 받자.

curl -Lo ~/.oh-my-zsh/themes/agnoster.zsh-theme https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/themes/agnoster.zsh-theme

   다운로드 받은 테마를 적용하기 위해서 .zshrc 파일에서 테마 항목을 "agnoster"로 설정하고 source로 설정을 적용해 보자.

source .zshrc 로 설정 적용 후  변경된 테마를 볼 수 있다.

 

   위의 방법으로 원하는 zsh의 테마를 적용하면 된다.   그러면 이제 유용한 플러그인 몇가지를 추가해 보도록 하겠다.
   먼저 auto-suggestions 이라는 PlugIn 이다.   이 플러그인의 기능은 내가 자주 사용하는 명령어 또는 파일 이름등의 Commad 입력에 대한 추천제안을 해주는 기능이다.   자주 사용한 입력기준으로 추천을 해준다.

   위의 사진에서 보는 것 처럼 ca 만 입력해도 내가 자주 입력했던 명령어 중에 ca로 시작한 명령을 찾아서 회식글씨로 표기해준다.  그 상태에서 만약 내가 입력하고자 하는 명령어가 맞다면 오른쪽 방향키를 누르면 자동 완성이 된다.   이 기능을 지원하는 PlugIn 이 auto-suggestions 이다.   그러면 설치 및 설정하는 방법에 대해서 알아보자.

   일단 oh-my-zsh 의 plugin 폴더로 이동해서 git clone 으로 plugin을 다운로드 받는다.

cd ~/.oh-my-zsh/plugins
git clone https://github.com/zsh-users/zsh-autosuggestions.git

.zshrc 파일에서 plugins 항목에 zsh-autosuggestions 를 아래와 같이 추가해주고 source 로 적용시켜 보자.

ca를 입력하니 최근 자주 입력했던 cat .zshrc 에 대한 권장 코드가 회색으로 정상적으로 표기 된다.

 

   이제 추가로 구문강조를 위해서 syntax-highlighting 이라는 플러그 인도 추가해보자.   이 플러그인의 기능은 내가 입력한 명령어가 사용할 수 있는 명령어인지 잘못된 명령어인지 색깔로 구분해서 보여준다는 것이다.

[ syntax-highlighting plugin 적용 전 ]
[ syntax-highlighting plugin 적용 후 ]

  무슨 차이인지 구분이 될 것이다.   사용가능한 명령어는 녹색으로 표기되고 사용불가능한 명령어는 빨간색으로 표기 된다.

  앞서 진행한 방법과 동일하게 clone 으로 다운받아서 적용해주면 된다.

cd ~/.oh-my-zsh/plugins
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git

vi .zshrc 로 설정파일을 열어 plugins 의 항목에 zsh-syntax-highlighting 항목을 추가한다.

   자세한 내용은 Git Hub 에서 참조할 수 있다.
https://github.com/zsh-users/zsh-syntax-highlighting

 

GitHub - zsh-users/zsh-syntax-highlighting: Fish shell like syntax highlighting for Zsh.

Fish shell like syntax highlighting for Zsh. Contribute to zsh-users/zsh-syntax-highlighting development by creating an account on GitHub.

github.com

 

   지금까지 쉘 변경부터 테마, 플러그인 적용등에 대해서 서술했다.   리눅스를 clean 설치하고 평소 사용하는 환경 대로 사용하려니 설정 할 것들이 너무나 많다.   시간이 나는 대로 터미널 꾸미기는 종종 추가하도록 하겠다.