Boston Linux & Unix (BLU) Home | Calendar | Mail Lists | List Archives | Desktop SIG | Hardware Hacking SIG
Wiki | Flickr | PicasaWeb | Video | Maps & Directions | Installfests | Keysignings
Linux Cafe | Meeting Notes | Blog | Linux Links | Bling | About BLU

BLU Discuss list archive


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

csh vs tcsh



On Wed, 26 Feb 2003 17:19:48 UTC
John Chambers <jc at trillian.mit.edu> wrote:

> There's a good historic irony here.  Bill Joy  apparently  originally
> wrote csh as an improved programming tool, and didn't intend it as an
> interactive shell to replace sh. There have been a number of analyses
> explaining  how  he failed on both goals.  For any number of reasons,
> csh is much more difficult to use as a scripting  language  than  sh.
> But  the  syntax  is  better than sh's for a human typist.  Also, csh
> introduced a history mechanism that turns out to  be  easier  on  the
> human brain than the different one introduced in ksh.  So csh and its
> clones are widely preferred as an interactive shell, even  by  people
> who write their shell scripts for sh or ksh or bash.
CSH presented several important features. History is one. The other is a
dual startup configuration:
.login for the login shell, executed once.
.cshrc for every shell and subshell
.logout

built-in evaluator. In the Bourne shell, expressions were evaluated by
the test(1) command (The left square bracket ([) is a Unix command
linked to test.

Command line recall. 

And many more. Virtually all of these were subsequently incorporated
into the Korn (and later POSIX) shell. 

> Of course, there are now even more people who prefer to use perl, tcl
> or python when the script grows to a dozen lines or so. These are all
> much better programming languages than any of the *sh interpreters.
Shell scripts are not intended to be used as programming languages. They
are intented to be used for small tasks. The more complex the task the
least suited a shell script is. One example of a complex script is
lint(1). The lint(1) front end (on Unix) is implemented as a shell
script. it provides a wrapper or glue for the lint(1) front end and back
end. 
Perl, Python and TCL are all designed to be used as programming
languages. Perl was designed to replace SED and AWK. Complete
applications are written in Perl, Python and TCL. 


BTW: I do not agree with Derek that csh scripting is brain damaged. The
intent of the CSH scripting language is that it is similar to the C
language where Bourne scripting in much different. I don't think the
goal was accomplished. (I personally prefer either KSH or BASH). 
-- 
Jerry Feldman <gaf at blu.org>
Boston Linux and Unix user group
http://www.blu.org PGP key id:C5061EA9
PGP Key fingerprint:053C 73EC 3AC1 5C44 3E14 9245 FB00 3ED5 C506 1EA9
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.blu.org/pipermail/discuss/attachments/20030226/de4fd10f/attachment.sig>



BLU is a member of BostonUserGroups
BLU is a member of BostonUserGroups
We also thank MIT for the use of their facilities.

Valid HTML 4.01! Valid CSS!



Boston Linux & Unix / webmaster@blu.org