It’s pretty common to prank your colleagues by slipping scripts into their
.bashrc that do things like aliasing the
cd command to something else so you can’t move around.
Here’s a great example that replaces all available commands with
There are some more great and devious stunts outlined here.
But if you really want to get inside someone’s head, then you can go one stage further by actually replacing their
bash binary with a subtly modified one. They will likely go crazy as they try and figure out why the shell is behaving oddly, finding nothing odd about the
.bashrc or anything else.
I should say that I used this as a way to motivate myself to grok the bash source code, and have no intention of using this in anger. And nor should you…
Prank #1 – $RANDOM Always Returns 42
If you didn’t already know, bash will give you a random number every time you reference the
variables.c file will make that always return… 42.
Prank #2 – cd Doesn’t Feel Like It
Someone suggested that
cd occasionally not working would drive them crazy
How about 1% of the time?
Prank #3 – History Mystery
This changes what
history outputs to insert an extra command between each command
rm -rf /.
12157 16/03/19 16:50:13 top
12158 16/03/19 16:51:32 rm -rf /
12159 16/03/19 16:51:32 vi script.asciidoc
12160 16/03/19 17:20:58 rm -rf /
12161 16/03/19 17:20:58 history
Should scare the bejesus out of anyone that checks it.
Prank #4 – The Prisoner
This one could be disturbing if you’ve been coding for many hours into the night.
Occasionally the shell will emit a message that appears to be a prisoner trapped in the shell…
Let me out!
I demand to see the ambassador!
I will not make any deals with you. I've resigned. I will not be pushed, filed, stamped, indexed, briefed, debriefed, or numbered! My life is my own!
$ cd /tmp
It's getting hot in here!
$ cd -
I know my rights!
Prank #5 – cd Won’t Come Home
Normally if you just issue a bare
cd command, it goes to the
HOME folder. A simple change to the code, and it will insist that
HOME is not set, even though it is.
Watch as the victim repeatedly echoes
$HOME and can’t work out why bash can’t see it.
The source for these changes is available here.
To build the binary, you’ll need the build-essential package (or equivalent) installed, and run: