Originally Posted by Micro420
Hate to diverge from the original poster, but why are there so many shells and what are the advantage/disadvantage to them? Can't we just stick to one? I used a csh once in a cluster setup and tried to submit a (bash) script and it locked up my computer. That was painful!
We have different shells because someone finds something missing or hard to use or not the way that I would do it. They (or someone that hears about it and likes the idea) then do something about by creating their own.
It is a good thing that people are always finding and producing new (or different stuff) if that was not the case, we would not have any advancement in any field and would be sleeping in cliff depressions, under trees, and so on. By learning new things, we actually are aiding in brain development which should be happening in our entire live.
Mr Bourne created the original widely used Unix shell. When people at UC, Berekely (I think I have enough 'e's in there) were coding in the programming language C and thought a more C-like shell would be a good thing and the "csh" was created. (Yes, I know that it does not really look like C but they needed a fast parser and parsed the line using the "strtok" function.) But "csh" has lots of problems (see http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/
) but had lots of nice features not found in the Bourne shell. Mr. Korn, decided that he would extend the Bourne shell to have several of these new and nice features (such as better command line editing, job control, arrays, etc) while retaining backward compatablity. This new shell is the 'ksh'. The Bourne Again shell is the result of the GNU group providing equivalent programs to the commercial Unix and it extends the original Bourne shell far past the ksh in features and can still run an original Bourne shell script.
The "psh" is an interactive shell that is really interactive perl.
The "tclsh" is a product that came out of Sun for controlling tools. It stands for "Tool Control Language". This was extended to include a graphics widget set and "wish" was created. The tclsh (and therefor wish) was made so that it could be added into a C application (C++ can also add it in also) to be used as it command processor. I worked for a company that made a code coverage tool that embeded tclsh and we used it to allow the user to extend and modify/create custom reports. We even included a "tcl" script that generated an html report as part of the product. We have used wish scripts to generate an living example of potential products and features as it is faster to generate for a "sales pitch" for a new idea than generating a c/c++ program.
The great thing is that all of these can co-exist without any problems.
tried to submit a (bash) script and it locked up my computer
This must have been a error in the script or you used the "source" command to execute it. The commands are different between them but I still would not have expected a locked up computer. A script just like a program can have infinite loops that so it does not stop. But that is what control-c ( or in extreme cases control-\ ) is for.
To top it off how boring would live be if only 1 type thing is needed. One house model, one transportation model, one tree model, one land model, one water model, etc. How about one water animal model, one air animal model, or one land animal model (We might not even be here then!).