Insults the user when typing wrong command
Switch branches/tags
Nothing to show
Clone or download
Failed to load latest commit information.
src Fix some code style inconcistencies and add some comments Dec 3, 2017
LICENSE Create LICENSE Nov 22, 2017 Update Nov 22, 2017


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 messages, while CMD_NOT_FOUND_MSGS_APPEND appends more messages to the existing 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-messages ]; then
    . /etc/bash.command-not-found-messages

if [ -f /etc/bash.command-not-found ]; then
    . /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.