unbound --version fails, prints unexpected output, or seems to invoke a different program, another tool on your system likely owns the unbound name and is taking precedence on your PATH.
command not found: unbound
If the shell can’t find the command at all — as opposed to finding the wrong one — check whether it’s installed:
- Not listed — install it:
npm install -g unbound-cli - Listed, but still not found — it’s installed somewhere that isn’t on your
PATH. Follow the Fix section below.
unbound discover --set-cron.
If unbound resolves to something, just not the Unbound CLI, that’s the shadowing problem this page covers. Keep reading.
Diagnosis
Compare which binary each alias resolves to:unbound-cli points at the Unbound CLI but unbound points elsewhere (or to nothing), something earlier on your PATH is shadowing it. Use unbound-cli directly while you investigate:
Common Causes
- A package providing an
unboundbinary was installed beforeunbound-cliand lives in an earlierPATHentry (e.g./usr/local/bin,/opt/homebrew/bin,/usr/sbin). The system DNS resolverunboundfrom NLnet Labs is a frequent culprit on macOS and Linux. - A shell alias or function defined in
~/.zshrc,~/.bashrc, or~/.profileis overriding the command. Check withalias unboundandtype unbound. - A previous install left a stale symlink. Remove it, or reorder your
PATHso the npm global bin directory comes first.
Fix
Find your npm global bin directory:prefix path with /bin appended — so a prefix of /usr/local gives /usr/local/bin, and /opt/homebrew gives /opt/homebrew/bin. Add it to the front of your PATH in ~/.zshrc or ~/.bashrc:
which unbound and which unbound-cli resolve to the same path under your npm global install, the conflict is resolved.
On Windows
Get-Command … -All lists every match in PATH order, so the first row is the one that wins. On Windows the npm global bin directory is the prefix path itself rather than prefix\bin — put it ahead of the conflicting entry in your user PATH and open a new terminal.
