In the default configuration of bash in ubuntu, when you type the
name of a software which is not installed, bash explains how to install it if
the executable if it exists, or how to install an executable with a really close name if it does not exist.
For example with emacs (which is not installed on my machine):
$ emacx
No command 'emacx' found, did you mean:
Command 'emacs' from package 'emacs23-lucid' (universe)
Command 'emacs' from package 'e3' (universe)
Command 'emacs' from package 'emacs23-nox' (main)
Command 'emacs' from package 'emacs24' (main)
Command 'emacs' from package 'emacs24-nox' (main)
Command 'emacs' from package 'emacs23' (main)
Command 'emacs' from package 'jove' (universe)
Command 'emacs' from package 'emacs24-lucid' (universe)
emacx: command not found
$ emacs
The program 'emacs' can be found in the following packages:
* emacs23
* emacs23-nox
* emacs24
* emacs24-nox
* e3
* emacs23-lucid
* emacs24-lucid
* jove
Try: sudo apt-get install <selected package>
With my current configuration of zsh I obtain:
$ emacx
zsh: command not found: emacx
$ emacs
zsh: command not found: emacs
There is also a difference of behavior when making a mistake in the name of an installed software.
Say I want to launch gedit instead of kedit. With bash, I obtain:
$ kedit
No command 'kedit' found, did you mean:
Command 'xedit' from package 'x11-apps' (main)
Command 'edit' from package 'mime-support' (main)
Command 'nedit' from package 'nedit' (universe)
Command 'gedit' from package 'gedit' (main)
Command 'jedit' from package 'jedit' (universe)
Command 'medit' from package 'medit' (universe)
Command 'ledit' from package 'ledit' (main)
kedit: command not found
While with zsh I obtain:
$ kedit
zsh: correct 'kedit' to 'edit' [nyae]?
So, my questions are:
- Is it possible to have a similar behavior in zsh as with bash when trying to launch an executable not yet installed?
If yes, how? - Is it possible to display all the possibilities when there is a typing mistake, instead of giving
one correction which can be wrong?
Best Answer
The default zsh configuration for Debian (and probably Ubuntu) just doesn't include support for the
command-not-found
package per default.In order to have the same functionality you just have to source
/etc/zsh_command_not_found
in your~/.zshrc
per default via:This should load and enable the
command-not-found
functionality inzsh
.