The kernel of UNIX is the hub of the operating system: it allocates time and memory to programs and handles the filestore and communications in response to system calls.
As an illustration of the way that the shell and the kernel work together, suppose a user types rm myfile (which has the effect of removing the file myfile). The shell searches the filestore for the file containing the program rm, and then requests the kernel, through system calls, to execute the program rm on myfile. When the process rm myfile has finished running, the shell then returns the UNIX prompt % to the user, indicating that it is waiting for further commands.
Amongst the functions performed by the kernel are:
managing the machine's memory and allocating it to each process.
scheduling the work done by the CPU so that the work of each user is carried out as efficiently as is possible.
organising the transfer of data from one part of the machine to another.
accepting instructions from the shell and carrying them out.
Enforcing the access permissions that are in force on the file system
The user can customise his/her own shell, and users can use different shells on the same machine.
History The shell keeps a list of the commands you have typed in. If you need to repeat a command, use the cursor keys to scroll up and down the list or type history for a list of previous commands.
You can use any one of these shells if they are available on your system. And you can switch between the different shells once you have found out if they are available.
Bourne shell (sh)
C shell (csh)
TC shell (tcsh)
Korn shell (ksh)
Bourne Again SHell (bash)