When I bought my first Mac, back in the days of MacOS 10.2, I did so because of the BSD system underneath. Having a Unix system, whether its GNU or BSD, gives me access to tools that I'm familiar with and sometimes prefer to their GUI counterparts (e.g., scp/sftp vs FileZilla).
Now that Windows has this, switching back is something that I'm giving serious consideration to.
It's not clear to me that Windows has this ...
I, like you, adopted the MacOS ecosystem because it was UNIX underneath ... but there's a big difference between underneath and alongside.
Although it is not commonly done, you can control and interact with your OSX system with UNIX commands ... there's one single filesystem namespace and you can interact with it from the command prompt as well as kill GUI apps or set preferences or ifconfig, etc.
It's my understanding that the Ubuntu subsystem in recent windows is sort of a parallel environment ... but is not meant to control the system directly or as an alternate path of interaction with Windows, correct ?
I am not so sure about this. I think Dustin Kirkland sheds some more light here:
http://blog.dustinkirkland.com/2016/03/ubuntu-on-windows.htm...
And he seems to be relatively excited about it so he benched it more recently:
https://www.linux.com/learn/howdy-ubuntu-windows-how-fast-it
It seems more like an inverse Wine than a parallel environment.
The Windows Subsystem for Linux (WSL) has it's own directory in the Windows filesystem that corresponds to /. It's uses some NTFS magic to store the Linux file attributes that don't directly correspond to NTFS file attributes.
It also, within the Linux environment, mounts your host drives under /mnt.
For what I generally use the OSX terminal for, WSL probably hits about 80-90% of my use cases. A lot of lower level utilities have weird issues - e.g., 'ip addr' seems to present the Windows network interfaces as though they were typical Linux ones, 'ss -a' gives a bunch of netlink errors, dmesg says "dmesg: read kernel buffer failed: Function not implemented", 'tcpdump' doesn't work, etc. On the other hand, curl, scp, ssh, etc do exactly what you'd expect.
I hope that these get filled out, at least with more constructive error returns, at some later date.
For now, I'm happy that they have enough of the low hanging fruit ripened sufficiently to make it possible to do 'normal' things from within WSL. I'd honestly rather they make the local (and network) filesystem more performant and robust; maybe they have.
My use case for WSL is coming around in the calendar year again so I'll be revisiting it soon.
You can call executables in both directions, even use windows executables in a bash script and pipe its output to awk.
https://docs.microsoft.com/nl-be/windows/wsl/interop#invokin...
[1] https://docs.microsoft.com/en-us/windows/wsl/release-notes
Full disclosure, I work at Microsoft on WSL.
It's the same kernel underneath so it's not really two parallel systems.
You can do some things to and with MacOS from CLI. Honestly though, it's all stuff I wouldn't miss awfully.
For Xming, simply set DISPLAY in shell and local GUI programs just work, as well as SSH X forwarding.
[1] https://github.com/mintty/wsltty
[2] https://sourceforge.net/projects/xming/
(EDIT: typo)
I'm on a Dell XPS 15 9560 if that matters.
It does as I've had no issues personally on as self-built desktop, an ASUS laptop, a MacBook running Bootcamp, and now a Surface Laptop.
Also, the native Windows git is still your best bet for git operations. That's one of the cases where I will have a PowerShell and an Ubuntu bash window side-by-side, working in the same /mnt/d/... | D:\... directory. git operations in PowerShell and Jekyll (or whatever) operations in Ubuntu bash.
Also, they _really_ chose a poor name for that executable; it should have been wsl.exe or some such, not bash.exe. At least lxss.exe isn't already in use by other software in my path...
https://docs.microsoft.com/en-us/windows/wsl/interop
Calling Windows EXEs from bash will automatically retain the current working directory under /mnt/c/*, so it should just work out of the box. Looks like you might be able to get away with just adding native Windows git to your bash path.
Also, totally fair feedback about the naming. In FCU, we added wsl.exe in addition to bash.exe. It launches into your default shell rather than /bin/bash.
[1] https://github.com/Microsoft/WSL/issues/2715
* I work at Microsoft on WSL
There are also some systems where kernel support for the devices is lagging, either because they are proprietary and poorly documented or because they have insufficient market penetration to get someone interested in writing good driver support. For example support for the pen on the Surface Pro 4 line is really horrible (IMHO) on Linux.
If that's true, will those new drivers also work on a regular non-Windows Linux install? That would be really great news, and pretty ironic, if device manufacturers or even Microsoft itself were suddenly writing more/better drivers for the Linux kernel. :-)
When you run Ubuntu on top of windows, windows replaces/emulates the Linux kernel - at least the part it needs to run the subset of Ubuntu that windows currently can - this emulation provided to run Ubuntu is done on the interface between the kernel and userspace, it is not done on a device/driver level.
Drivers are OS specific, the drivers in question here are either windows drivers, which works only on windows, or they are linux drivers which work only on linux. (Noone is writing drivers for windows which could also work on linux)
Next up is to try running something more taxing, and then look into GPU access from within it.
I'm looking forward to them developing the subsystem further.
There's still a place for windows native tools.