by Homebrew

🔍 Ubuntu’s command-not-found equivalent for Homebrew on macOS

213 Stars 27 Forks Last release: over 6 years ago (v0.1.0) MIT License 1.2K Commits 2 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Homebrew Command Not Found

This project reproduces Ubuntu’s

for Homebrew users on macOS.

GitHub Actions

On Ubuntu, when you try to use a command that doesn’t exist locally but is available through a package, Bash will suggest you a command to install it. Using this script, you can replicate this feature on macOS:

# on Ubuntu
$ when
The program 'when' is currently not installed.  You can install it by typing:
sudo apt-get install when

on macOS with Homebrew

$ when The program 'when' is currently not installed. You can install it by typing: brew install when

Over 5000 formulae are supported, representing more than 17000 different commands (100% of the main Homebrew repo).


First, tap this repository:

brew tap homebrew/command-not-found
  • Bash and Zsh: Add the following line to your

    (bash) or
    HB_CNF_HANDLER="$(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.sh"
    if [ -f "$HB_CNF_HANDLER" ]; then
    source "$HB_CNF_HANDLER";
  • Fish: Add the following line to your

    set HB_CNF_HANDLER (brew --prefix)"/Homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.fish"
    if test -f $HB_CNF_HANDLER
       source $HB_CNF_HANDLER


This tool requires one of the following:

macOS ships Bash 3.x so you must upgrade to v4.x and configure it to be used with:

brew update && brew install bash
# Add the new shell to the list of allowed shells
sudo bash -c 'echo /usr/local/bin/bash >> /etc/shells'
# Change to the new shell
chsh -s /usr/local/bin/bash

How it works

When you tap the repo you’ll get two more

brew which-formula
brew which-update
. The first one uses a database file which gives you the formula you have to install in order to get a specific command. The file is generated by the second command by crawling all installed formulae and collecting their binaries. Having this as a tap means you get an up-to-date binaries database each time you run
brew update


script defines a
function which is used by Bash when you try a command that doesn’t exist. The function calls
brew which-formula
on your command, and if it finds a match it’ll print it to you. If not, you’ll get an error as expected.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.