Comment Comment by arp242 For zsh I use this to setup $PATH, which seems to address most of the use cases of this tool: ### Setup PATH dirs=( /usr/lib/ccache/bin # ccache ~/.local/script ~/.local/bin # My local scripts. ~/.local/gobin # GOBIN /usr/local/bin /usr/local/sbin # local takes precedence /bin /sbin /usr/bin /usr/sbin # Standard Unix /usr/pkg/bin /usr/pkg/sbin # NetBSD /usr/X11R6/bin /usr/X11R6/sbin # OpenBSD /opt/ooce/bin # illumos ~/.local/share/gem/ruby/*/bin(N[-1]) # Ruby ~/.luarocks/bin(N[-1]) # Lua ~/.local/dotnet/root ~/.local/dotnet/tools # .NET /usr/lib/plan9/bin # Plan 9 from userspace ~/code/Vim/gopher.vim/tools/bin # gopher.vim ~/.nimble/bin # Nim ~/.cargo/bin # Rust ~/.ghcup/bin # Haskell ) typeset -U path=() # No duplicates # Use full path so /bin and /usr/bin aren't duplicated if it's a symlink. for d in $dirs:A; [[ -d $d ]] && path+=($d) unset dirs d typeset -U makes the $path array "unique", and :A ensures the full path is always used (in case of symlinks).You can probably do something similar with bash, but idk.$path is tied to $PATH and an array, so you can use it as such for some of the other things: print ${(F)path} | grep /bin # (F) to print one array per line print ${(F)path} | sort # can also use (o) to print ordered parent arp242 2 years ago
You can probably do something similar with bash, but idk.
$path is tied to $PATH and an array, so you can use it as such for some of the other things: