Are we going to use sh and its descendants for the next 100 years? The original shells evolved out of macro processors, and as time went on, more and more programming language features were bolted on, but it's an uneasy fit.
Take it for a test: go write a project euler problem (or any small programming task--doesn't have to be math) in your shell of choice. It's painful.
There are weird features of shell languages that will never go away (globs and unquoted strings sharply limit the design space), but even given those limitations, it's possible to design nicer languages.
I don't fault someone for saying "right now, I'd rather use the default shell my box comes with, because the pain points of switching are too high". But yes, we really do need something to replace it. I think both zsh and fish make nice steps, but I don't think either really meets my hopes.
I don't think we are disagreeing. From the tutorial in the OP:
"If you have a strong understanding of other shells, and want to know what fish does differently, search for the magic phrase unlike other shells, which is used to call out important differences."
"stdin and stdout can be redirected via the familiar < and >. Unlike other shells, stderr is redirected with a caret ^"
That's pretty, no argument there. But I already remember to count the std's from 0, so stderr is &2. Not as pretty, fish is nicer, no argument. But its not MUCH nicer, and I'm going to have to use &2 here and there in my life anyway...
So:
- fish has no dedicated syntax for setting variables
- fish does not have an export command
- fish stores the exit status of the last command in $status instead of $?.
- fish does not use backticks ` for command substitutions. Instead, it uses parentheses.. I'm pretty sure good bash form is $() these days, not backticks. So you're spared the dollar sign.
'etc 'etc. I agree we need something to leapfrog what we have but these changes, while nice improvements, seem minor. At least as far as I can see! That's why I asked. Maybe there's some more neat stuff that makes it a significant improvement.
Careful with the "in your shell of choice". Someone, perhaps me, will inevitably point out PowerShell, the shell without a proper Terminal app, but with native support for .NET-based programming languages and libraries, including useful well, let's call them "macros" because I've forgotten the official term. http://programming.oreilly.com/2013/06/powershell-command-li... It's really quite powerful, but it's a shame the Terminal tools haven't kept pace on Windows. (And yes, I know of cmdemu, chocolate, but it's not the same as built-in.)
I'm asking because i'm using powershell with conmeu for almost 2 years now without a problem. Plus with conmeu i also run vim and farmanager (old school file manager ) in 2 separate tabs.
On a Mac, Terminal ships built-in with sensible defaults. It's easy to launch on any computer, and I often use it from other people's systems. Same with Linux/Ubuntu. Windows, however, now ships with ps.exe, but it's not the same as conemu, console2, obviously, which is why you choose to use them. My only objection is that while Chocolate makes it easier to install them to your own system, so few people do that it becomes harder to use them when you know you'll miss them on other people's systems. I tend to stick to console for when I know commands will work cross-platform.
Really though, it's just the shame that Microsoft hasn't improved their Terminal app in over 16 years at a rough guess, from a functionality standpoint. That's just ... that makes no sense. Not when they're doing so much more to encourage sysadmins to use their command prompts and PowerShell. For a company that can make such great IDEs and OSes, why can't they combine both into a masterful shell window?
I would also like to see a more radical approach. E.g. one making use of graphic features. Why is my auto-completion completely text-based instead of being fully graphical like in a real browser? It's a waste of screen space having fixed row size.
Maybe evolution will also go the other way around: Nautilus and other file browsers have rudimentary shell-like use & feel, e.g. when searching for something. Extending that could create some interesting features.
Take it for a test: go write a project euler problem (or any small programming task--doesn't have to be math) in your shell of choice. It's painful.
There are weird features of shell languages that will never go away (globs and unquoted strings sharply limit the design space), but even given those limitations, it's possible to design nicer languages.
I don't fault someone for saying "right now, I'd rather use the default shell my box comes with, because the pain points of switching are too high". But yes, we really do need something to replace it. I think both zsh and fish make nice steps, but I don't think either really meets my hopes.