Slashdot Mirror


Command Shells - The Quirks, The Pros and The Cons

OctaneZ asks "I am not trying to start a flame war here, but I would personally be very interested in seeing an analysis, both pros and cons, of all of the common shells: bourne, bash, csh, tcsh, and korn. I understand that a lot of linux users swear by bash because it is the default, but they all have there own "personalities" what does everyone think?" Interesting question. I'd be interested in hearing why some folks prefer csh over bash.

5 of 17 comments (clear)

  1. bash, bourne, ksh, csh by josepha48 · · Score: 3
    I have tried some of the different shells. Here is my review.

    csh: This is used as the default shell on AIX. It has some newt features like ! and !! which allow a user to automajically execute a command in the history. Bash also support shis. In fact most of what csh can do bash can do to. I often find myself usinjg csh commands in bash as I work on an AIX server machine at work. csh uses setenv where bash uses export

    ksh: or korn. I hate the name core shell it makes me think of something that wel .. it allows one to set up a command line editor. If you like vi you can have a vi on the command line sort of feeling.

    bourne: I believe the bourne shell is used on the BSD's. I did try freebsd once and believe that I was using bournce shell. I found it primative compaared to bash. There was a greater learning curve. There seemed to be more to setup, but that could have been FreeBSD itself. There was a history, but I was not sure hw to access it.

    Now bash: bash allows one to use ther arrow keys tonavigate thru the history to make executing commands easier. However this is not the only way to execute the history, one can the ! or !! (!69 will execute teh 69 th command in the history file). both ksh and bash use sthe export command to set envariables. I also believe that you can set vi as your command line editor to execute vi commands in the bash shell. To me bash is more like DOS, and thus you do not deal with the quirks of a command shell as much as you deal with the learning the unix commands, thus it is easier to use.

    just muy .02 cents. I am sure that others have there opinions. So send flames > /dev/null and moderate -1G

    send flames > /dev/null

    --

    Only 'flamers' flame!

  2. Oops. by Wakko+Warner · · Score: 2
    On all the AIX boxes I've ever administered, the default shell was ksh, not csh. Even root's shell was ksh, as was every user shell by default. I can't stand ksh as an interactive shell; it's best used for scripting, IMO. Its only saving graces as a login shell are the command-history and editing support, the first of which every other decent shell has and the second of which I've not found all that useful.

    FreeBSD's default shell is also csh. I personally cannot stand csh, but find tcsh to be perfect for an interactive command-line shell. (I prefer bash for scripting, however, but that wasn't part of the original question.) tcsh also has command-line history which can be accessed with the arrow keys like in bash.

    I tried switching my default shell from tcsh to bash this summer as a test (to become more of a stereotypical second-wave unix dork, I guess), but found it very annoying in many respects compared to tcsh, mostly in the way it handles tab-completion. Needless to say, I'm still using tcsh and probably always will be.

    (To sum it up: tcsh is the way to go for me. Stay the hell away from csh, and, if you use and like ksh, I'm worried about you.)

    - A.P.
    --


    "One World, one Web, one Program" - Microsoft promotional ad

    --
    "Remember when the U.S. had a drug problem, and then we declared a War On Drugs, and now you can't buy drugs anymore?"
  3. Migration/learning curves by Demona · · Score: 2

    Coming from MS-DOS and JP Software's 4DOS, I found bash the easiest shell to adapt to, as a lot of good ideas in 4DOS appear to have come from bash (most notably the up/down arrow keys to navigate command history, and tab completion). bash is a little more demanding on system resources than most of the competition, if you're limited to somewhat older hardware. I think of bash as the mutt of shells, if a bit more bloated than mutt compared to other mail agents.

    --
    Fuck Slashdot
  4. Don't forget zsh... by osu-neko · · Score: 2
    I'd really recommend looking at the Z shell (zsh). The tab completion in the latest versions (>=3.1) is a lot better than any I've seen in previous shells. I don't know of any features in any other shell that aren't in zsh. History (both arrows and !), command line editing, mail checking, very powerful scripting, etc, etc, etc. I think pretty much any good idea from any other shell eventually makes it into zsh, plus some original ideas as well. Downside: it is huge. This ain't the shell you want on your memory starved 386. And the man pages were so big it's actually split into 13 sections ("man zsh" will give you a list of the other 12 sections, for things like "man zshbuiltins" etc.), although I actually consider that a feature (instead of wading through the entire manual I can just bring up the section I'm looking for information from).

    Here's a sample zsh script to get the feel for it:

    #!/bin/zsh
    for file in "$@"
    do
    if [ "${file}" != "${(L)file}" -a ! -e "${(L)file}" ]
    then
    echo "${file} => ${(L)file}"
    mv "${file}" "${(L)file}"
    fi
    done

    Which naturally takes renames any file whose name is not all lowercase to be all lowercase. Great for junk imported from brain-damaged operating systems.

    Anyways, try it out yourself. Worst that can happen is you won't like it and stop using it. I doubt it, though. Try it, you'll like it!

    --

    --
    "Convictions are more dangerous enemies of truth than lies."
    1. Re:Don't forget zsh... by rwg · · Score: 2
      I use zsh daily on a 386/33 with 8 megs of RAM -- it really isn't any larger or smaller than its siblings.

      63132 /bin/ash
      373176 /bin/bash
      166544 /bin/ksh
      262184 /bin/tcsh
      340548 /bin/zsh
      (executable sizes)

      According to ps, memory usage among tcsh/bash/zsh is pretty close. ksh and ash have considerably smaller footprints.

      rwg 17543 0.0 0.1 1116 372 pts/7 S 01:14 0:00 ash
      rwg 17544 0.0 0.3 1680 896 pts/7 S 01:14 0:00 bash
      rwg 17545 0.0 0.1 1236 488 pts/7 S 01:14 0:00 ksh
      rwg 17546 0.0 0.4 1948 1068 pts/7 S 01:14 0:00 -csh
      rwg 17626 1.0 0.3 1700 956 pts/7 S 01:15 0:00 zsh

      I've found that zsh's usefulness outweighs any excessive memory usage it may have. Little things like being able to change directories without using cd make it almost unbearable to go back to bash or [t]csh.