Unix tools on Windows: Cygwin vs VirtualBox

Been using Cygwin on and off for a decade. Been using VirtualBox for a year. Here's major differences.
First of all, both are worse off than running Linux natively. You might run Linux as dual boot, but dual boot has its own issues, such as you need to reboot every time you switch, and you can only use one OS at a time.
Cygwin is absolutely necessary if you do a lot unix related open source dev on Windows, such as {python, perl, git, mysql, etc}. I recommend you install Cygwin even if you also use VirtualBox.
Cygwin provides you with the full set of unix command line tools. For example, {bash, diff, grep, find, git, rsync, ssh, etc}. For these tools, it's much faster than inside a VirtualBox.
VirtualBox gives you a full Linux OS running inside Microsoft Windows. The advantage is that, you have full Linux, including all its desktop apps such as Gnome, KDE, Ubuntu Unity. If you want to learn Linux, definitely you want VirtualBox.
Cygwin is Good For
- Full set of unix command line tools, and any other dev tools, for example, Perl, Python, Ruby, ….
- Much faster than VirtualBox.
- Real work horse. For example, use Cygwin version of Python for real Python dev.
VirtualBox is Good For
- Complete Linux environment.
- Lets you run any GUI desktop, such as Gnome, Unity, KDE, xfce.
- Real, full, Linux experience.
- Safe. No interference with your Windows.
- Slow.
- Good as a software testing environment.
- You can easily remove and install new guest OS setup.
To give a context of slowness, i run VirtualBox on a 2012 PC box with 4-core CPU (AMD Athlon II X4 645) and 8G of memory. It's slow, in the sense that everything you do is some 5 times slower than if you were running Linux native.
Alternatives to Cygwin
here's a list of alternatives to Cygwin. I do not recommend them. Just install VirtualBox and Cygwin both.
- [ UnxUtils ] [ https://en.wikipedia.org/wiki/UnxUtils ] (collection of independent ports of each unix util) I tried it. Kinda badly outdated and not well maintained.
- [ Microsoft Windows Services for UNIX ] [ https://en.wikipedia.org/wiki/Microsoft_Windows_Services_for_UNIX ] and [ Interix ] [ https://en.wikipedia.org/wiki/Interix ] (Microsoft's offer. Part of Windows Server/Enterprise editions. Originally independent.)
- [ MinGW ] [ https://en.wikipedia.org/wiki/MinGW ]. Originally a subset of Cygwin, designed for developers who wants to port unix apps.
on Microsoft Windows, i highly recommend PowerShell .