macOS: Homebrew 설치 및 설정(zsh 관련)

설치

홈페이지에 있는 그대로 따르면 된다.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

그런데.. 설치가 끝나고 나도 brew 가 작동하질 않는다. 이건 아마도, macOS 기본 셸이 bash 에서 zsh 로 바뀌었기 때문일게다. 지금 찾아보니 Catalina 때부터라는데, 내가 Homebrew 를 열심히(?) 썼던 때는 High Sierra 시절이므로, 이런 변화를 알아차리지 못했다.

이를 위해선 한가지 명령(?)을 더 해줘야 하는데..

경로(Path) 설정

명령이라기 보다는 .zshrc 에 한 줄을 덧붙여주면 되겠다.

eval $(/opt/homebrew/bin/brew shellenv)

이 명령을 해석(?)해보면..

$ /opt/homebrew/bin/brew shellenv
export HOMEBREW_PREFIX="/opt/homebrew";
export HOMEBREW_CELLAR="/opt/homebrew/Cellar";
export HOMEBREW_REPOSITORY="/opt/homebrew";
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin${PATH+:$PATH}";
export MANPATH="/opt/homebrew/share/man${MANPATH+:$MANPATH}:";
export INFOPATH="/opt/homebrew/share/info:${INFOPATH:-}";

brew shellenv 는, homebrew 관련 환경변수 할당치를 출력해주되, 앞에 export 를 붙여준다.
그러나 이 출력은 그야말로 화면에 문자열을 보여주기만 할 뿐, ‘명령’으로 역할은 하지 못한다. 문자열에 생기를 불어넣어 명령으로 바꿔주려면, eval 의 힘이 필요하다.

다시 말하면, .zshrc 에 그냥 위에 있는 export 6줄을 넣어줘도 무방하다.


혹시나 해서 bash 로 셸을 바꾸고 brew 를 실행해보니 잘 됐다. export 로 PATH 를 확인해봐도 경로가 잘 들어가 있고.. 아마도 Homebrew 설치 프로그램이 bash 기준으로 작성돼 있는 듯?? 애초에 명령어도 /bin/bash 로 시작하기에, 의심할 여지는 충분하다.

아직 Catalina 이전 판을 사용하고 있는 사용자들을 배려해서 그런 걸까??
명령을 /bin/zsh 로 바꿔보면 어떨까??? ^^

Completion 설정(zsh)

이를 테면, brew in 까지 치고 tab 을 눌렀을 때 install 이 자동 완성되게 하고 싶다면? 역시나 손품을 팔아야 한다.
공식 설명서에 방법이 나와 있긴 한데..

zsh 와 oh-my-zsh 를 사용 중이라면, 약간 주의가 필요하다.

if type /opt/homebrew/bin/brew &>/dev/null; then
  FPATH=$(/opt/homebrew/bin/brew --prefix)/share/zsh/site-functions:$FPATH
fi

위 내용을 $HOME/.zshrc 에 넣어주되, source $ZSH/oh-my-zsh.sh 전에 위치시켜야 한다.
또, 원문에서는 그냥 brew 라고 했는데, 이러려면 이 행 앞에 Homebrew PATH 가 인식되어있어야 한다. 따라서 이런 저런 위험(?)인자가 있으므로, 그냥 경로를 모두 넣어주는 편이 좋겠다.

이렇게 해주고 나서도 작동하지 않는다면, 다음 명령까지 필요하다.

rm -f ~/.zcompdump; compinit

간단한 사용법, 명령어는 예전에 쓴 글 참고.

Author: 아무도안

안녕하세요. 글 남겨주셔서 고맙습니다.