Shell Shock

Sat, Jan 09, 2010

<img src="" alt="Responding to the Nmap output, Trinity summons "sshnuke" which attempts to exploit SSHv1 CRC32." />

Photo by Anonymous

ShellCommunicate to the Machine.

Almost everyone who switches on a computer today expects to see a tiny button at the bottom left of the screen that says 'Start'. Apologies to Mac users and Linux aficionados of the Gnome and KDE camps, but the truth remains that majority of computer users are still Windows users. Let's get back to the basics and get shell shocked!

A shell is an interface for the user to communicate with the machine. Wikipedia says the name shell originates from shells being an outer layer of interface between the user and the innards of the operating system (the kernel). Let's explore some CLI OS shells. Linux offers many choices for shells.

Discounting the fact that there are as many if not more flavors of Linux, here's a short list:

# bash: The GNU Bourne Again Shell (bash) is based on the earlier Bourne shell for Unix. It is the default shell for user accounts in Linux as well as on Mac OS X.
# bsh: The Bourne shell upon which bash is based also goes by the name bsh. Not often used in Linux, the bsh command is usually symbolically linked to bash.
# csh: The original C shell is rarely used on Linux, however for most csh users, Linux offers a fine substitute in tcsh.
# tcsh: The earlier C shell (csh) serves as the basis for this shell. Not a default shell for most distros out there, it is operationally different from bash especially while assigning environment variables.
# ksh: Now take the best of the Bourne shell and the C shell and take it a step further and voila! you have the Korn shell (ksh) which has its own dedicated fan base amongst Linux users.
# zsh: The Z shell (zsh) like the alphabet signifies, evolves further incorporating features from older  shells and developing from there.

In Linux, bash is default. Other OSs use csh or tcsh as the default, so use your keyboard for more than just chatting and filling online forms and explore. Shells need not be limited to OS interface as I have just explained but also for programming languages. There are shells for Java, Perl, PHP or even Ruby. Also I would be limiting the definition of a shell if I said it's all about the command line.

GUI shells abound for Windows as well as the X Window System. Even Windows Recovery Console is a shell, albeit a CLI. Want to have fun with shells ASAP? Fire up your browser and go to to test-drive Google Shell or goosh, an open source browser based command line shell that is actually a front end for Google search. Imagine typing out commands, keywords and search strings to search. Shell shocked?

Guest post by Ritesh Reddy. He is a dilettante who enjoys writing, ranting and ruminating about all and sundry. His natural habitat is in front of a screen that has him spell bound. He runs amok amongst various social networks and escapes from it all by scouring the beach for signs of life.