Apple Switches tcsh for bash
gklinger writes "AppleInsider is reporting that Apple has switched from tcsh to bash in the the latest developer build (7B44) of Mac OS X 10.3 (Panther). There is speculation that the switch was made to appeal to Linux users. Experienced users get pretty religious about their shells so what remains to be seen is how diehard tcsh users will react." I don't know about appealing to Linux users in particular, but I just don't know many people who prefers tcsh these days, on any platform. It seems like everyone is using bash or zsh.
I was a big fan of tcsh until I started doing serious shell scripting in
a heterogeneous environment. Since tcsh wasn't available on all machines, all
shell scripts were written for the bourne shell. After several months of
using bourne shell syntax for scripts but using tcsh shell syntax on the
command line, I finally decided that in order to preserve my sanity, I'd try
bash on the command line. Turns out that after a day or so to get used to
things, bash had everything I used tcsh for plus a couple of features that
I'd never known would be so useful.
I don't like running scripts under bash because it's so big, but as an
environment, it's pretty decent.
*sigh* back to work...
If you're writing non-trivial scripts, you would do far better to use a decent scripting language like Ruby, Perl or Python, all of which are more portable than bash, not to mention more robust and less likely to result in scripts filled with security holes.
The bash shell is really the tool of choice for people who can only deal with one tool. For interactive use, tcsh is better, and for scripting almost anything is better.
Basically, bash tries to be jack-of-all-trades, with all that that implies. But to FSF folks, who use emacs, "jack of all trades" is a way of life.
GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
In tcsh you need to do some kludge like:
The fact that you cannot redirect stderr independently of stdout has always pissed me off about *csh. I'd rather ksh or bash anyday. Actually, I like bash for my command line, and coding in ksh...
"Ignorance more frequently begets confidence than does knowledge"
- Charles Darwin
"The worst tyrannies were the ones where a governance required its own logic on every embedded node." - Vernor Vinge
tcsh is a tad easier to work with. yes its less powerful but most of the time i dont need the power and would gladly trade for the simpler syntax and even more gladly trade uniformity for customization.
it seem to me that making the default shell tcsh and letting power users change it to bash if they want might bave been a better alternative. also considering that all my scripts will now break under the defaults its not so good for me.
Some drink at the fountain of knowledge. Others just gargle.
But I like working in tcsh!
This is a wonderful feature, especially when working on a case-preserving-yet-insensitive filesystem like HFS+.
This one doesn't always save me -- one of my common typos is to repeat the 'd' when changing directory, thus:
But it's enough of a win that I wouldn't want to go back to an interactive shell that doesn't have such a feature.
Whenever I'm trying to do anything complex, I tend to drop into a bash subshell, but for 90% of interactive work I find that tcsh can do about everything bash can, and has a lot of interesting enhancements that AFAIK bash doesn't. Please feel free to correct me if that's not true, and bash can now do such things.
(Also, another nice thing about being comfortable in an alternative shell, aside from being able to work productively when dropped on a machine that maybe doesn't have a wide variety of shells, is the built in security factor. It has been long observed that using an unusual keyboard or pointing device is an excellent (if mild) way to discourage people from messing around with your computer when you're away from your desk. Using an unusual command shell can have the same mild deterrance effect: it may not keep your Linux-loving neighbor from messing around in a login session you forgot to close, but it might annoy him enough to get it to get bored & go away pretty quickly :-)
DO NOT LEAVE IT IS NOT REAL
This isn't well known, and for those who aren't hopelessly devoted to their shell, it's a good reason to use tcsh on Mac OS X. Fred Sanchez maintains a nice set of tcsh configuration files that are installed, but not loaded, by default. For more information, see the file located at:
/usr/share/tcsh/examples/README
If you're a new tcsh user, setting this up is as simple as echoing a few files into your home directory. If you've already got a tcsh configuration, it shouldn't be too hard to shift things around. When all is done, you'll have a great set of default command completions and aliases, and a cool way to organize your customizations.
I followed the link provided, and found the section titled "Unix-lover Heaven" rather funny. It said, "Panther will include a final X11 window server for Unix-based apps, improved NFS/UFS, FreeBSD 5 innovations as well as support for popular Linux APIs, IPv6 and other important acronyms." I'm guessing the marketing folks wrote that last bit...