I've just migrated to Zsh from Bash, but I have a bit of a problem in it. In bash on an Ubuntu system, when I type the name of a command which does not exist, Bash searches the apt database for a matching command name and prints out the package names that provide that command. It's a really useful feature, so I was wondering if something like that could be implemented in Zsh using a script or something?

Here's an example:

$>xmms2
The program 'xmms2' is currently not installed.  You can install it by typing:
sudo apt-get install xmms2-client-cli

Or if the command is not an exact match:

$>xmms
No command 'xmms' found, did you mean:
Command 'lmms' from package 'lmms' (universe)
Command 'xmms2' from package 'xmms2-client-cli' (universe)
Command 'xmds' from package 'xmds' (universe)
Command 'xdms' from package 'xdms' (universe)
link|improve this question
feedback

1 Answer

up vote 1 down vote accepted

OK, I've found the answer!
First you'll need to install a package named "command-not-found" (dunno about other distro's but in Ubuntu it's in the repositories).

sudo apt-get install command-not-found

And then you will need to edit your .zshrc and then source in the file /etc/zsh_command_not_found

source /etc/zsh_command_not_found
link|improve this answer
Just one minor detail. I get an error, say zsh: command not found: gnug, prior to the desired output. How do I get rid of that? – Nordlöw Feb 22 at 21:35
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.