This repository contains a simple shell script that defines command_not_found_handle
(for bash) and command_not_found_handler
(for zsh). Whenever possible, this shell script will call the command-not-found
python script which will:
- call
snap advise-snap --command ...
ifapp-containers/snapd
is installed - suggest commands that do exist and closely match the non-existing command
- search the Portage File List for packages that install the non-existing command if
app-portage/pfl
is installed
Many other shells also support calling an external command-not-found
handler, for some shells instructions are shown below.
For shells not in the list below, see the documentation for your shell and setup the relevant command-not-found function or hook to call the command-not-found
python script.
The first argument passed to this script should be the command that was not found, all other arguments are ignored.
To install it simply emerge app-portage/command-not-found
, and optionally install app-containers/snapd
and/or app-portage/pfl
as well.
Next follow the steps for your shell of choice:
command-not-found
is automatically setup in app-shells/bash
for all interactive sessions via /etc/bash/bashrc.d/command-not-found.sh
, no manual action is required.
To use command-not-found
in app-shells/zsh
, add the following to your /etc/zsh/zshrc
(for all users) or ~/.zshrc
(just for you):
source /etc/bash/bashrc.d/command-not-found.sh
To use command-not-found
in app-shells/fish
, add the following to your ~/.config/fish/config.fish
:
function fish_command_not_found
/usr/bin/command-not-found $argv
end
To use command-not-found
in app-shells/nushell
, edit your ~/.config/nushell/config.nu
as described below:
$env.config = {
...other config...
hooks: {
...other hooks...
command_not_found: {
|cmd_name| (
try {
/usr/bin/command-not-found $cmd_name
}
)
}
}
}
A typo on the command line:
andrew@andrew-gentoo-laptop ~ $ szh
Command "szh" not found
Maybe you meant one of these commands:
- sh
- zsh
- ssh
Searching the Portage File List for packages installing szh...
No candidates found
Trying to execute a command that is not installed, but is available in portage:
andrew@andrew-gentoo-laptop ~ $ radeontop
Command "radeontop" not found
Searching the Portage File List for packages installing radeontop...
* app-misc/radeontop
Seen Versions: 1.4 9999
Portage Versions: 1.3-r3 1.4 9999
Repository: gentoo
Homepage: https://github.com/clbr/radeontop
Description: Utility to view Radeon GPU utilization
Matched Files: /usr/bin/radeontop
* app-misc/radeontop
Seen Versions: 1.3-r3
Portage Versions: 1.3-r3 1.4 9999
Repository: gentoo
Homepage: https://github.com/clbr/radeontop
Description: Utility to view Radeon GPU utilization
Matched Files: /usr/sbin/radeontop
Trying to execute a command that is not installed, but is available both in portage and as a snap:
andrew@andrew-gentoo-laptop ~ $ audacity
Command "audacity" not found, but can be installed with:
sudo snap install audacity
See 'snap info <snap name>' for additional versions.
Searching the Portage File List for packages installing audacity...
* media-sound/audacity
Seen Versions: 3.2.5-r1 3.3.3
Portage Versions: 2.4.2-r3 3.2.5-r1 3.3.3 9999
Repository: gentoo
Homepage: https://www.audacityteam.org/
Description: Free crossplatform audio editor
Matched Files: /usr/bin/audacity