Windows 10 — the operating system people love to hate or hate to love. Even if you’re a Linux die-hard, it is a fair bet that your workplace uses it and that you have friends and family members that need help forcing you to use Windows at least some times. If you prefer a command line — or even just find a place where you have to use the command line, you might find the classic Windows shell a bit anemic. Some of that’s the shell’s fault, but some of it is the Windows console which is — sort of — the terminal program that runs various Windows text-based programs. If you have the creator update channel on Windows 10, though, there have been some recent improvements to the console and the Linux system that will eventually trickle down to the mainstream users.
What’s New?
So what’s new? According to Microsoft, they’ve improved the call interface to make the following things work correctly (along with “many others”):
- Core tools: apt, sed, grep, awk, top, tmux, ssh, scp, etc.
- Shells: Bash, zsh, fish, etc.
- Dev tools: vim, emacs, nano, git, gdb, etc.
- Languages & platforms: Node.js & npm, Ruby & Gems, Java & Maven, Python & Pip, C/C++, C# &
- .NET Core & Nuget, Go, Rust, Haskell, Elixir/Erlang, etc.
- Systems & Services: sshd, Apache, lighttpd, nginx, MySQL, PostgreSQL
The changes to the console are mostly surrounding escape sequences, colors, and mouse support. The API changes included things like allowing certain non-administrative users to create symlinks. We’ve made X Windows work with Windows (using a third-party X server) and Microsoft acknowledges that it has been done. However, they still don’t support it officially.
Why, Why?
Linux follows — more or less — basic precepts set forth by the Unix operating system. While it has grown over time, Unix was built to run on computers that are not terribly different from a modern computer. True, the PDP-7 was an 18-bit computer but it didn’t have the stifling quasi-8 bit architecture that MSDOS grew up in. MSDOS, on the other hand, was battling quite a few hardware limitations. But MSDOS eventually got a shell called Windows. Then Windows turned the tables and became the operating system that could run MSDOS. But this led to a hodgepodge of issues, not the least of which is the shell was anemic. There have been several answers to this. Even back in MSDOS days, third-party shells like 4DOS were popular, not to mention Unix-like shells available with Cygwin, MKS, and similar tools. Modern Windows still has an anemic MSDOS shell, but also PowerShell and the WSL bash shell.
That different heritage has led to a pretty big disparity between the standard shell and even the simplest Linux shell. Of course, you can run Windows under virtualization on Linux or vice versa. This, however, should perform better since it is essentially reverse Wine (that is, a layer on Windows that runs Linux just as Wine is a layer on Linux that runs Windows).
Terminal Velocity
There’s also a new Windows Terminal application to manage all the shells with tabs and font support for emoji — because apparently, that’s important. You can see a flashy commercial for it in the video below.
Between having so many browser-based applications and now having a bash shell on just about everything, it is getting where you almost don’t care what CPU you are using or even what operating system. While that’s good for us, it probably isn’t good for Microsoft. Perhaps they figure they make most of their money from corporations and think this strategy will stop corporate developers from adopting open operating systems? We aren’t sure it is all that great for Linux, either, as it dilutes one of its big advantages — a wide range of tools for serious users and developers.
Just to head off the pedantic comments, we know that Linux is the kernel and the operating system is the kernel plus tools from GNU and others. But colloquially, people say Linux and so do we. While Linux is “free” — if you are supporting it and your time has any value, that’s not totally true. You can pay someone like Red Hat for your support, but then having Microsoft support is one of Windows selling points — most of the time.
If you are not running Windows 10, want painless X Windows, or just don’t want to use the Microsoft tools, there’s always Swan which is based on Cygwin. As for me? My main operating system is Emacs. Don’t tell Elliot.
The correct name is GNU/Windows.
Also, I think you have an extra “S” in the title.
:) “Shell”
The “s” is silent
yes, the other “s” could be silent.
:-) You, guys, are the reason why my productivity goes to nothing and I spend my time reading comments rather than the article
The core stack is still Win32 over NT kernel; GNU tools are just an option.
Linux follows — more or less — basic precepts set forth by the Unix operating system.
is systemd more or less?.
It is a step in the slow walk of MS moving towards caring what scripters do and letting them get things done. a few years ago when they were rolling out powershell, they put out an ask to come watch early adopters use the shell. It looked a lot like they really wanted to see our processes and make it so the tool worked more closely to the way we do.
At work, I am stuck in the MS ecosystem. I appreciate the functionality of the new tools, and it will be nice to run into functionality instead of errors when I log in from home and accidentally type ls instead of dir. We will never really get everything we need everywhere we need it as long as we hop between OSes as often as we eat food.
I appreciate the gesture.
My thoughts exactly. I type ls instead of dir at least once a day. ipconfig instead of ifconfig numerous per day.
It took me a while, but try to transition your muscle memory to ip addr instead
The REAL test of compatibility is what happens when you mistype ‘ls’ and swap the letters. :grin:
Glad to see fish on the list. My <3 shell
I find the color support interesting. Things that ran correctly in old ansi.sys got too slow to use after the xp era, so I´ve removed most of it from the scripts we use here. But color makes some things much easiter to explain to other people who will use a script.
It would be nicer, also, if one could download an alias file to reproduce the command-line commands and switches ( dir, copy, move, ren, etc ) from windows in linux.
Don’t rely too much on colors, and if you do use few and clearly contrasting ones.
Especially today, people abuse the amount of colors there exist, making it hard for people with differing color vision to distinguish some colors.
Please keep it simple and clear.
Those color people already made many things much harder than they were when systems were more restricted.
I have learned to be a bit careful with adopting new tools from Redmond. If this is not cancelled with a decade, I will definitely give it a try.
Just fork it then.
https://github.com/microsoft/terminal
Please tell me they’ve finally removed the preference for in Windows text files. We really don’t need compatibility with the AD1901 Murray-Baudot code any more ;-)
https://en.wikipedia.org/wiki/Baudot_code#Murray_code
Cleverly, Hackaday has a preference to remove angle-bracketed tags such as and , the comment should have read: Please tell me they’ve finally removed the preference for in Windows text files. We really don’t need compatibility with the AD1901 Murray-Baudot code any more ;-)
Even more cleverly, Hackaday has a preference to remove angle-bracketed tags even if they have spaces after the brackets. This time, I’ll use square brackets (imagine they’re angled). The comment should have read:
Please tell me they’ve finally removed the preference for [cr][lf] in Windows text files. We really don’t need compatibility with the AD1901 Murray-Baudot code any more ;-)
Thank you Akismet.
Agreed, double-character line-endings just have not make any sense for a few decades now. The technology that needed it didn’t survive a fraction as long as the extra char.
Maybe “/r/n” would have made the point.
Oh, so I can pull out my old copy of TheDraw and start doing ANSI art again? Ah, the good old days of the Napalm Enema BBS…. when times were simpler and those new-fangled “WWW’s” took half an hour to load through CompuServe’s Internet gateway.
Always had trouble getting ANSI art looking right when posted.
“when times were simpler and those new-fangled “WWW’s” took half an hour to load through CompuServe’s Internet gateway.” OMG, just when I had forgotten. OMG2, please, just shoot me.
All hail Mosaic.
I just find it funny that someone mucking about with shell has a hard time using Win 10.
So the return of dosshell aka dos hell is almost upon us?
At some point they’ll get rid of the backslash separator. We will then be close to the end of the journey.
Most Windows users drop all there files in the same location, so they may just as well drop support for directories altogether and use Bing to find files.
512 files in root directory error? DOS? :)))
I once became the owner of a $30,000(?) optical lens grinder because it had a PC inside running a DOS program that would occasionally would write an error log. One log per error. To the root directory. Once it hit the file limit, the machine itself stopped working. (I corrected the source of the problem, but they had already started using a newer, better one, so let me keep it.)
Amen! Here endeth the lesson.
DOS and Windows have natively supported using slashes and backslashes both throughout from the beginning. You can mix and match them, too. DOS and Windows do not care.
If you find an application that doesn’t let you use regular slashes, that’s the fault of the application, not Windows.
Ummm… I have NO idea where that might be true. I can’t recall ever coming across that, and I’ve used MS-DOS since version 2.01 and Windows since 1.0. Try typing dir \?, for instance, and see what you get.
WSL is moving to a minimal VM based on Hyper-V, so these things are probably not using the “ENIW” system that WSL originally used.
I wonder how and why ‘apt’ is there. If I install a piece of software via apt from which repos is it downloaded and where exactly is it installed? C:/Program Files/ ? or somewhere else?
Glad to see that those who are stuck on Windows for whatever reason (work, family members, gaming) will at least get a decent command line terminal/shell…but in most cases, if they’re tech-capable they’ll either:
– Install Linux on a VM or
– Remove Windows completely and install Linux natively or
– After installing Linux natively, they run a Windows VM for access to MSWord and Outlook,.
At home, I moved exclusively to Linux 8 Years ago and have yet to look back. Work provides with a Windows computer that I haven’t used in years. Instead I have a refurbished budget computer that I bought with my own money running Linux. I access work’s MS Windows system via remote login (VDI) when I absolutely need it for using MS Word, getting access to intranet files or network printing
A very quick search on Google will get you your answers.
In fact, everything mentioned in this article has been available openly in Windows releases for 1-2 years.
Why this is appearing on Hackaday NOW is a mystery to me.
Yay more attack vectors. Though I’d love to run linuxy code on my mandated windows (damn you fusion360) environment.
Powershell
Why use a command window that’s trying really, really weakly to be a Unix shell, when you can install MinGW and get a full GNU development environment in Windows? This has been around for many years.
“and now having a bash shell on just about everything, it is getting where you almost don’t care what CPU you are using or even what operating system. While that’s good for us, it probably isn’t good for Microsoft.”
Not nessecarily true. If they didn’t add bash alternatives to windows, then people would more likely use another OS. Now, there’s at least a chance they won’t immediately move to another one and just stay on windows.
Or it might help developers switch to windows so they can test other windows related issues, while still having a sane dev environment.
“font support for emoji — because apparently, that’s important.”
It is if you’re writing software that needs to validate that user input of emoji behaves as expected.
FYI, Emacs is an editor, not an OS.
That is what you think, keep up with the times
https://www.google.com/url?sa=t&source=web&rct=j&url=https://news.ycombinator.com/item%3Fid%3D6291620&ved=2ahUKEwifr8KmzOHiAhXIpY8KHU6vDSMQFjACegQIAhAB&usg=AOvVaw2pJ9npcZSgKXsP2p0B_Q2a&cshid=1560261877632
Thank you but i think i’ll stick with real bash on real Linux… W10 is horrible.
Right, but for some of us stuck developing on Windows 10 machines for work instead of Linux, this is nice stuff.
But then i ll use Powershell which suits better in a MS environment.
I am a linuxer but it is really two differents world.
“and that you have friends and family members that need help forcing you to use Windows at least some times”
Nope, I dont help family with their computers any more. They are all on their own now and if they have problems i tell them to learn or just get a tablet like everyone else.
I will teach them how to use my gear if they have a need for it but fixing their problems is out of my realm and quite frankly usually only a google search away for them.
The reason that we have so many security issues is because people refuse to learn about how computers work, Because they dont know how they work they dont care about security and if they dont care about security then the corporations wont sell them security.
At some point in time you have to let go of a babies hand and let them learn to walk on their own.
Well said. I now just tell people that I use Linux, not Windows, and they mostly leave me alone :)
If they are lazy, it’s not my problem.
As for why Microsoft is adding ‘Linux’ into Windows, it is for the same reason they are adding virtualization support into Windows for Linux; If you run Windows under Linux, you need Windows (thus, Microsoft gets profit, control). And why would people want it? Well ‘out of the box’, Windows does A, Linux does B, soon Windows will do A and B, so developers, etc will have the best of both worlds, and Microsoft gets paid.
The only possible fail is if developers write for Linux…
Also, it’s worth mention Console2, if you haven’t used it before: https://sourceforge.net/projects/console/
How am I the only one who noticed that the “recent upgrades” article linked to was written in *2017*?
I came here hoping there was an upgrade/fix for networking services like ping or netcat. ;-)
That said, I use Bash on Ubuntu on windows everyday and love it, was just hoping they had finally gotten the network stack fixed and I was hearing about it here first… instead, I’m two or more years ahead of this articles’ curve.