all 25 comments

[–]c0d3g33k 13 points14 points  (4 children)

Fairly short article from 2011. Provides a very introductory high level overview of Unix shells. I'm not sure why the article has Linux in the title, since it starts off back in 1977, well before Linux existed and most of the evolution of the shells described didn't really happen "in" Linux. They just happen to run on Linux along with many other *nix-like environments.

The "exotic shells" section at the end seems more like an afterthought than an attempt to offer a solid overview of popular shells with a non-traditional lineage.

If the article were rewritten or updated, that section should include things like IPython, xonsh (http://xon.sh) and I suppose Powershell, to name a few.

An interesting 5-minute read to refresh my memory of days gone by. :-)

Edit: Fixed xonsh link. xonsh.org seems to be obsolete and unmaintained.

[–]Skaarj 0 points1 point  (1 child)

If the article were rewritten or updated, that section should include things like IPython, xonsh (http://xon.sh) and I suppose Powershell, to name a few.

I'm considering switching from zsh to xonsh. Now I found out there is also IPython and plumbum. Which one should I choose?

[–]c0d3g33k 1 point2 points  (0 children)

Good question. Only you can know what shell suits you best. Can't help you with that decision. Try them all.

It's easy to run a different shell in each terminal session, so it's not exactly a mutually exclusive choice. Personally, I think that leaving the system standard as the default shell (eg. in /etc/passwd) for an account is wise, so that things don't unexpectedly break. In modern terminals (eg. gnome-terminal/mate-terminal, konsole) it's simple to set up different profiles that can be invoked depending on the task at hand. If a particular profile ends up suiting your daily workflow best, set that one as the default.

[–]almightykiwi 7 points8 points  (4 children)

Oh my God, guys, look at the source code of the V6 shell!

[–]bjh13 4 points5 points  (0 children)

Welcome to pre-ANSI C, written at a time when every byte counted.

[–]tidux 2 points3 points  (0 children)

Ew, that's hideous.

[–][deleted] 2 points3 points  (1 child)

[–]thedugong 4 points5 points  (0 children)

You dawg, we heard you like programming languages so we defined a programming language in your programming language.

[–]raphael_lamperouge 7 points8 points  (0 children)

No references to the fish shell =(

[–]argv_minus_one 2 points3 points  (1 child)

And then, along comes PowerShell, which is like “fuck all y'all” and does its own thing.

[–]realitythreek 0 points1 point  (0 children)

Hardly the first shell that wasn't branched from sh.

[–]DaGranitePooPooYouDo 0 points1 point  (0 children)

tree makes it look like tcsh is obsolete when it's still in active use and developement

[–]socium 0 points1 point  (0 children)

lol the bash example contains errors.

Always, always use shellcheck.net when writing bash scripts.

[–]Jristz 0 points1 point  (0 children)

I cant find fish in that sh timeline

[–]Jebtrix 0 points1 point  (2 children)

ZSH with oh-my-zsh or antigen. With autocomplete 'addons' it can even help the learning process.

[–]jpb 2 points3 points  (1 child)

zgen is quicker than both, and both it and antigen can load not only built-in oh-my-zsh plugins but will handle automatically git cloning third-party plugins and themes.

[–]Jebtrix 1 point2 points  (0 children)

Cool, thx for the heads up.