TL;DR
- Anywhich(anyw)는 여러 패키지 관리자에 설치된 실행 파일까지 확인하며, Linux에서 동작하는
which대안임. - PATH의 모든 항목을 순서대로 검색해 일치 항목을 전부 표시하고, 실제로 실행되는 항목을 알려줌.
- pacman, apt, dnf, zypper, apk, xbps, Flatpak, Snap, Nix, npm -g, deno, uv, pnpm, bun, cargo install, go install, pipx 확인자를 지원함.
- Windows는
PATHEXT에 따른.exe,.bat,.cmd검색을 지원하며, Scoop·Chocolatey·WinGet 확인자는 픽스처 테스트만 완료된 상태임; macOS는 미테스트 상태임. --plain,--why, 빌드·테스트·릴리스 절차와 MIT 또는 Apache-2.0 이중 라이선스를 제공함.
개요
- Anywhich는 시스템에 설치된 항목을
$PATH에 없어도 찾는which대안이며, 입력 명령은anyw임. which는$PATH에서 검색을 멈추고 첫 번째 결과만 표시하므로, 패키지 관리자가 여럿인 시스템에서는 바이너리가 설치돼 있어도 결과가 비어 있을 수 있음.anyw는$PATH전체를 순서대로 검색해 모든 일치 항목과 실제 실행되는 항목을 표시함.- 현재 Linux에서 동작하며, 다음 확인자를 지원함.
- 시스템 패키지 관리자:
pacman,apt,dnf,zypper,apk,xbps - 애플리케이션 및 언어 패키지 관리자:
Flatpak,Snap,Nix,npm -g,deno,uv,pnpm,bun,cargo install,go install,pipx - Windows 검색은
PATHEXT를 따라.exe,.bat,.cmd를 확인함. Scoop, Chocolatey, WinGet 확인자는 픽스처 테스트만 완료된 상태이며, macOS는 테스트되지 않음. - Windows 바이너리는 CI에서 교차 컴파일해 각 GitHub 릴리스에 첨부됨. x64 Windows용
anyw.exe를 제공하므로 설치하는 컴퓨터에 Visual Studio나 MinGW가 필요하지 않음. Linux 빌드도 같은 방식으로 타르볼 형태로 제공됨.
사용법
anyw bat실행 결과는 다음과 같이 경로별 일치 항목과 현재 선택된 항목을 표시함./usr/bin/bat—pacman의bat 0.25.0-1, 활성 항목/home/rokuroo/.cargo/bin/bat—cargo의bat 0.24.0- 현재 선택된 항목:
/usr/bin/bat(pacman의bat 0.25.0-1) anyw foobar처럼 일치 항목이 없으면$PATH에 결과가 없고, 알려진 소스를 통해서도 설치되지 않았다는 메시지를 표시함.- 일치 항목이 없을 때 종료 코드는 1이므로 스크립트에서 사용할 수 있음.
플래그
--plain: 색상을 제외한 스크립트용 출력--why: 각$PATH항목 아래에 해당 항목이 그 순위에 놓인 이유를 한 줄로 표시
빌드
cargo build --release로 빌드하면 바이너리가target/release/anyw에 생성됨.cargo test로 테스트를 실행함.
릴리스
git tag v0.2.0 && git push origin v0.2.0으로 태그를 푸시하면 릴리스 워크플로가 두 플랫폼용 바이너리를 빌드해 GitHub 릴리스에 첨부함.- 태그는
Cargo.toml의 버전과 일치해야 하며, 워크플로가 일치 여부를 검사하고 다르면 실행에 실패함.
라이선스
- MIT 또는 Apache-2.0 이중 라이선스임.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요