macOS Homebrew 에서 gnubin, uubin $PATH 처리
문제
예)
% brew info uutils-coreutils
...
If you need to use these commands with their normal names, you
can add a "uubin" directory to your PATH from your bashrc like:
PATH="/usr/local/opt/uutils-coreutils/libexec/uubin:$PATH"
등록해야 할 PATH 관리가 너무 어렵다.
방법 #1 - $PATH 자동 등록
.zshrc 의 적당한 위치에 다음을 추가 한다. (PATH 순서에 따른 hidden 을 고려해서)
export PATH="$PATH:$(fd -d 2 -t d -L '^bin$' /usr/local/opt -x echo '{.}' | sort -u | paste -sd ':')"
$PATH 가 너무 길어져서 등록이 안되는 문제가 있음
방법 #2 - 특정 디렉토리에 실행파일 링크 생성
-
소스 : link_bins.zsh
-
아래 3가지 경우에 대해서 하위 디렉토리에 있는 실행 파일을
"${HOME}/opt/bin"
에 링크한다./usr/local/opt/[xxx]/bin
/usr/local/opt/[xxx]/libexec/uubin
/usr/local/opt/[xxx]/libexec/gnubin
-
버전이 여러개 일 수 있는데, 최신버전은
이름@버전
에서@버전
이 없는 것으로 기준을 한다. - 특정 버전을 사용하고 싶으면 예외로 처리 한다.
-
-
설치
link_bins.zsh 을 실행 한 후에, .zshrc 의 적당한 위치에 다음을 추가 한다.
export PATH="$HOME/opt/bin:$PATH"
- 확인
% which curl
/Users/user01/opt/bin/curl
생각보다 링크갯수가 많고 (2000개 이상) 실행 시간이 오래 걸린다.
.eol.