Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It's also worth pointing out that many current CLIs are still grossly crippled. The DOS / CMD.exe environment in Windows. Oracle's sql client. Sun/Oracle's default tcsh. Cisco's IOS. All of which lack one or more of readline, tab completion, command history, pipelines, and other, really basic, modern shell features.

One of the first selling points for Linux when I first started exploring it a decade and a half ago was that while some of the internals were a tad crufty, the userland (much of it, admittedly, GNU) didn't suck, and didn't suck in a much bigger way than stock commercial proprietary unices did suck.

Pogo stick or oxcart, the point is that many such tools were, or are now, pretty much intentionally crippled.



DOS supported those you mention, and cmd.exe finally has them on by default in recent winders. It is still primitive though in everything else, e.g. scripting. Powershell with its weird syntax is a big improvment, but we split up after XP.


I haven't used Powershell at all. Would've been far better for MSFT to have adopted bash and provided windows-specific utilities where absolutely necessary.

DOS / cmd.exe, last I checked, didn't have true pipes, true shell expansion, or true readline capabilities (unless it's now GPLd, which I very much doubt). It does have some history and tab completion (though that last works weirdly IMO).

By shell expansion: expansion of wildcard globs by the shell, and not by specific utilities. Piping -- I forget the specifics, but it's always seemed hit or miss, mostly miss. Readline: see readline(3).


Yep, NIH.

DOS was primitive but the things you mentioned worked, even if they were a simulation. The end user was unaware, unless they needed real OS capabilites. In which case, why were they using DOS?

Cmd has a lot of improvements most people are not aware of because they were off by default. Still they refused to do further improvement necessary to make it very useful. There is a 3rd party shell called 4NT that is/was a compatible and very powerful replacement.


The thing about DOS's globbing is that it wasn't DOS that was doing the globbing, but executables. And they'd do it inconsistently. The executables were also aware if they were passed, say, a '*', and might change their behavior as a consequence (I'm trying to remember whether or not this was actually been the case, can't say, it's been too many years).

Which doesn't happen in any Bourne-compliant shell, as it's the shell which expands the wildcard, not the app (an unexpanded or escaped wildcard character can of course be passed to an executable).


True. I remember someone here complaining about that just the other day, said it was a bad idea, but I can't remember why. I prefer the shell doing it.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: