How to make Windows go Linux with Cygwin

Image result for How to make Windows go Linux with Cygwin

If you still think that operating systems are tied to hardware, you need to update your thinking; nowadays there are lots of options that let you run one operating system within another or in parallel to another. This is true whether your base operating system is Linux, Windows or macOS X. My main system boots macOS X, for example, but also has Windows 10 and Ubuntu Linux accessible as full operating system installs.

This requires a lot of resources, however, and is typically done as a dual boot or virtual machine, which can put a lot of demands on your computing device. Certainly if you’re running apps within a VM while trying to use other programs in the native operating system, you might end up frustrated with overall performance.

But there are some smart alternatives that graft features and characteristics of one operating system onto another. Cygwin offers just this ability to anyone who is running Microsoft Windows but wants access to a Linux command shell and many of the best open-source Linux programs available today. Better yet, as an open-source project, Cygwin is free to install and use.

At a more technical level, Cygwin is a brilliant idea, an emulation of all the API-level calls required for POSIX (Portable Operating System Interface) compliance between Linux and the Windows system. This means that you instantly have support for a wide variety of development tools and utilities that otherwise aren’t a part of Windows itself. Particularly for developers, this can be a huge boon.

Let me be clear, though: Cygwin does not offer the ability for you to download and run any Linux application. Apps need to be recompiled specifically for the Cygwin environment to work properly. Good news, though; there are lots and lots of open-source software packages — over 21,000 — that have been ported to the Cygwin environment, notably including ImageMagick, Python, Perl, Ruby, EMACS, make, curl and bzip2, along with support for developing code in C, C++, Objective-C, Tcl, Ada, CLISP, Scheme and Prolog.