With the arrival of virtual machine software like VirtualBox, VMWare, Parallels etc., is Cygwin any useful on the Windows platform to give a linux like environment?
Virtual machines and Cygwin answer two different questions.
Virtual machines are for when you want to run multiple operating systems at the same time. It's like having two computers without the expense of purchasing two sets of hardware.
Cygwin is intended to give Windows a number of Unix tools, so that Unix geeks can more effectively use Windows (though I'd argue that Cygwin doesn't actually do that very well), and to provide some tools that have greater features than Windows provides on its own. I don't think the characterization of Cygwin providing a "linux like environment" is particularly accurate. (Cygwin is actually intended to provide a more complete POSIX development environment for Windows, and, in doing so, provides a number of utilities. The end result for end users, though, is that it merely provides tools.)
There's actually kind of a third option, Cooperative Linux, which I think actually does provide a Linux-like environment within Windows. It actually runs the Linux kernel as a process within Windows. There are some distributions that run under it; andLinux comes to mind. With these systems, you actually do have a Linux environment that can more directly interact with your Windows environment than a virtual machine can.
2Cygwin being a bunch of utilities is actually merely a side-effect. It's foremost intended as a Linux-like environment for software, not for the user, so you have the appropriate APIs wrapped in emulation. With coLinux the Linux kernel runs as a device driver inside the Windows kernel, not as a process.– JoeyOct 11, 2009 at 13:12
3I only install cygwin to be able to have a decent shell to work on my windows files. I would be lost without find, grep, sed and it's ilk.– NifleOct 11, 2009 at 13:59
1@Johannes: the coLinux web page says "coLinux always utilizes only one process of the host OS for all its Linux processes, privately managing their scheduling, resources, and faults". AFAICR, it runs as a service, not a driver.– wfaulkOct 11, 2009 at 14:42
It is still useful for running Unix tools like rsync, which you want to operate on the files on the Windows box rather than it being stuck away in a virtual machine. You can also then use the Windows scheduler for starting jobs with the tools.
1I'd rather take native builds than install cygwin, though.– JoeyOct 11, 2009 at 13:10
2not everything's available in native builds, though. Oct 11, 2009 at 14:43
As far as I am concerned, Cygwin is a different concept. Unlike virtual machine it provides an DLL which emulates an Linux environment/layer, which can run and build linux program on a windows machine. For example, if you want to use some library that is only distributed as source code and is intended for built in Linux system, what if you want to use this library in Visual Studio? You cannnot use VS to build it since it relies on Linux dependencies, so you need Cygwin in this situation.