Insults the user when typing wrong command
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 6 commits behind hkbakke:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Randomly insults the user when typing wrong command.

Change insults as needed :)

noob@bender:~ $ sl

  Y u no speak computer???

-bash: sl: command not found
noob@bender:~ $ gti status

  This is why nobody likes you.

-bash: gti: command not found
noob@bender:~ $ sp aux

  Go outside.

-bash: sp: command not found


  • Bash v4 and newer
  • Zsh


# Method 1 - know what you are doing
git clone bash-insulter
sudo cp bash-insulter/src/bash.command-not-found /etc/

# Method 2 - I don't care, insult me!
sudo wget -O /etc/bash.command-not-found

Then source the file automatically for new logins by adding the following to /etc/bash.bashrc or any of the other locations where you can configure your shell automatically during login (zsh have different config files):

if [ -f /etc/bash.command-not-found ]; then
    . /etc/bash.command-not-found

Login again and type some invalid commands for the effects to be visible.


bash-insulter can be customized, or even be made polite and nice, by populating CMD_NOT_FOUND_MSGS or CMD_NOT_FOUND_MSGS_APPEND environment variables. The values should be arrays. CMD_NOT_FOUND_MSGS replaces the default values, while CMD_NOT_FOUND_MSGS_APPEND appends more messages, typically used if you want to append more messages to the default ones.

It is probably cleanest to source a file populating the environment variable as needed. In this example I create a file /etc/bash.command-not-found-messages with the following content:

    "You are so smart!"
    "You look pretty today!"
    "I don't know what to say"

Then source this file before you source the script:

if [ -f /etc/bash.command-not-found ]; then
    . /etc/bash.command-not-found-messages
    . /etc/bash.command-not-found

Then logout and in again. The end result is that you will now use your messages instead of the default ones.