Skip to main content
If 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.
If a scheduled Unbound scan is failing this way, its log names both the path recorded at setup time and the current one. That usually means a Node version manager moved the global bin directory after the schedule was created — reinstall the CLI, then re-run 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:
If 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:
Inspect the conflicting path:

Common Causes

  • A package providing an unbound binary was installed before unbound-cli and lives in an earlier PATH entry (e.g. /usr/local/bin, /opt/homebrew/bin, /usr/sbin). The system DNS resolver unbound from NLnet Labs is a frequent culprit on macOS and Linux.
  • A shell alias or function defined in ~/.zshrc, ~/.bashrc, or ~/.profile is overriding the command. Check with alias unbound and type unbound.
  • A previous install left a stale symlink. Remove it, or reorder your PATH so the npm global bin directory comes first.

Fix

Find your npm global bin directory:
The bin directory is the 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:
Reload your shell:
Once 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.