←back to thread

535 points raddad | 3 comments | | HN request time: 0s | source
Show context
hobs ◴[] No.11390553[source]
Some additional details from Scott Hanselman:

http://www.hanselman.com/blog/DevelopersCanRunBashShellAndUs...

"This is a real native Bash Linux binary running on Windows itself. It's fast and lightweight and it's the real binaries. This is an genuine Ubuntu image on top of Windows with all the Linux tools I use like awk, sed, grep, vi, etc. It's fast and it's lightweight. The binaries are downloaded by you - using apt-get - just as on Linux, because it is Linux. You can apt-get and download other tools like Ruby, Redis, emacs, and on and on. This is brilliant for developers that use a diverse set of tools like me."

"This runs on 64-bit Windows and doesn't use virtual machines. Where does bash on Windows fit in to your life as a developer?

If you want to run Bash on Windows, you've historically had a few choices.

Cygwin - GNU command line utilities compiled for Win32 with great native Windows integration. But it's not Linux. HyperV and Ubuntu - Run an entire Linux VM (dedicating x gigs of RAM, and x gigs of disk) and then remote into it (RDP, VNC, ssh) Docker is also an option to run a Linux container, under a HyperV VM Running bash on Windows hits in the sweet spot. It behaves like Linux because it executes real Linux binaries. Just hit the Windows Key and type bash. "

replies(11): >>11390574 #>>11390626 #>>11390693 #>>11390705 #>>11390731 #>>11390748 #>>11390890 #>>11391364 #>>11392443 #>>11393237 #>>11402098 #
drinchev ◴[] No.11390574[source]
> This is a real native Bash Linux binary running on Windows itself.

How does it work without VM? I'm super curious!

replies(5): >>11390600 #>>11390601 #>>11390609 #>>11390641 #>>11390652 #
1. nickysielicki ◴[] No.11390600[source]
The same way Wine works for Windows binaries. Translate system calls.
replies(1): >>11390787 #
2. vetinari ◴[] No.11390787[source]
Wine has it easier - it does not translate system calls, it needs "only" dll loader and a set of dlls exporting the right symbols.

NT system calls are not exposed to userspace; only system-supplied dlls can use them. It is done by changing syscall codes for every build, so non-system app would never know, which syscall number to use.

replies(1): >>11390839 #
3. nickysielicki ◴[] No.11390839[source]
Huh, TIL.

That explains why Wine always seemed so buggy, though.