On Tuesday 04 July 2006 12:57, yahav Biran wrote:
> Hi,
> Does any body know a good book with examples for learning tcsh. I would
> like to learn the benefits of using it by scripting such as: variables and
> arithmetic, looping, functions and other stuff.

To complement what other people said, let me give here a document I started 
writing for trying to convince the Technion's EE department (my department), 
but also the CS one to teach bash programming instead of csh programming:

* Tom Christiansen's (The Perl World's No. 2 or 3 and one of the top UNIX and
Open Source Experts) Csh Considered Harmful:

    - http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/

* Bash has functions (as well as aliases) instead of just aliases, that are
easy to break.

* Bash has proper quoting.
    - handling whitespaces in csh.

    - Bash is the default scripting and login shell on Linux. 
    - ksh is the default login and scripting shell on non-GNU System V 
    - On Mac OS X, bash is the default scripting shell and I heard mixed 
      reports about whether it or tcsh is the default scripting shell.
    - Only on the Open Source BSD variants, ash (a slightly enhanced Bourne
      shell implementation) is the scripting shell and tcsh is the default.
    - In all cases, c-shell is not used for scripting at all, only perhaps for
    interactive use. And Bash/ksh/zsh is now often used for both.
    - On cygwin the default shell is bash. zsh is available for either cygwin
    or for non-cygwinned win32.

* Entire Bash mini-programs can be written, tested and debugged in one line.
This is impossible to do in csh which forces loops to be on separate lines.

* subshells and capture-subshells ($(...)) actually work in Bourne Shell.
    - And Bash *has* capture-subshells which are much safer than `...`.

* The students tend to think that C-shell is "The UNIX Shell". Seeing how 
lame C-shell is they tend to believe that the UNIX shell sucks. Which is not
the case for Bash and friends which are beautiful and a joy to work with.

* The wrong legacy reasons: many institutions once thought they had to make a 
choice between sh (which had a sane syntax and programmability but bad for 
interactive use) and tcsh which had bad programmability but with good
interactive capabilities. The Technion was one of the institutes that 
standarised on tcsh.

For this generation the choice is clear: bash or zsh that combine both good
programmability and good interactive use. There's no reason to keep using
tcsh forever.

    - csh->tcsh was a mistake. Bill Joy (and those that followed him on the
    work on tcsh) should have created a Bourne Shell compatible shell with 
    many extensions, instead of creating a new shell that was so poor for 
    programmatic use. This is what ksh and bash did eventually, but with
    some (sh-compatible) influence from csh.

People who may be able to help with the Conversion:

[SNIPPED because it may imply defamation]

I should note that even if bash/zsh (and possibly also ksh) is more scalable 
than tcsh, it still has many limitations and there are many things that 
should better be done in $YOUR_FAVOURITE_P_LANGUAGE.

My shell history was that when I started to use Linux at home I it had bash 
installed by default. Then at work at Cortext web design, I was instructed to 
use tcsh. Back then I couldn't tell the difference between bash and tcsh, and 
wrote most of my shell scripts in Perl, which was what I knew.

Afterwards, I took a bit of break from Unix, and then installed Linux on my 
home machine, and again it came with bash. I gradually taught myself more and 
more shell commands (but there's still a lot I don't know in bash). Then, 
when I came to the Technion, I couldn't set bash as my login shell in t2, and 
everyone were taught csh in courses (and I had many friends who studied Matam 
or Mamat), and I kept finding tcsh to be incredibly lame and unforgiving, 
both as a scripting shell, and as a user shell. (why *must* I type newlines 
for loops?)

I kept evangelising bash and the other modern Bourne-shell-derived shells. 
(which I don't know, but are also cool). Tcsh vs. Bash was discussed to death 
in Hackers-IL ( http://www.hackers.org.il/ ) and the Haifa Linux Club mailing 
list ( http://www.haifux.org/ ), ( partially because of me... ;-)).

I once asked one hacker who mentioned a new bash feature, if he converted from 
tcsh to Bash. He told me "Yes. Never Looked Back.". I had to look a bit back 
because I took Mamat in the Technion because it was an easy course for me and 
gave me some good credit, and I was lucky not to become petrified like Lot's 

Naturally, if you have scripts written in tcsh you should still learn it in 
order to maintain them. (and hopefully eventually converting them to bash). 
But there's no excuse in writing anything half-serious with it or using it as 
a user shell anymore, or else you'll get bad practices.

Csh is Evil with one of these gigantic "E"'s you can find at the beginning of 


        Shlomi Fish

Shlomi Fish      [EMAIL PROTECTED]
Homepage:        http://www.shlomifish.org/

95% of the programmers consider 95% of the code they did not write, in the
bottom 5%.

To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]

Reply via email to