macOS Homebrew 에서 gnubin, uubin $PATH 처리

Posted by 장두현 on 2025.04.03 목 00:00
Updated on 2025.04.03 목 16:05
Read time, about 1 minute(s)

macOS

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

    1. 아래 3가지 경우에 대해서 하위 디렉토리에 있는 실행 파일을 "${HOME}/opt/bin" 에 링크한다.

      • /usr/local/opt/[xxx]/bin
      • /usr/local/opt/[xxx]/libexec/uubin
      • /usr/local/opt/[xxx]/libexec/gnubin
    2. 버전이 여러개 일 수 있는데, 최신버전은 이름@버전 에서 @버전이 없는 것으로 기준을 한다.

    3. 특정 버전을 사용하고 싶으면 예외로 처리 한다.
  • 설치

link_bins.zsh 을 실행 한 후에, .zshrc 의 적당한 위치에 다음을 추가 한다.

export PATH="$HOME/opt/bin:$PATH"
  • 확인
% which curl
/Users/user01/opt/bin/curl

생각보다 링크갯수가 많고 (2000개 이상) 실행 시간이 오래 걸린다.

.eol.


tags: macOS, tips, zsh, script