Cygwin

Cygwin is a free UNIX-like environment for Windows that enables you to natively compile (it's not an emulator, but a set of libraries that provides a POSIX-like layer over Win32) just about any UNIX package you might need (except some things requiring raw device access and a few specific network calls).

I've been using it for a few years now, and it provides me with rxvt, bash, SSH, mutt, vim (emacs is there too, if that's your thing), perl and an increasingly performant X server. I can recompile just about anything on it (it's pretty much the same as porting to a slightly different variant of Linux or BSD), and most of the dozens of packages I use daily are trivial recompiles.

In terms of real compatibility, it knocks the spots off Interix (now rebranded Services For Unix) and any other commercial alternative. It is also very stable (provided you know what you are doing and keep track of core package revisions), and often a better programming environment than "raw" UNIX.

RedHat also provides a commercially supported version.

Resources:

  • PuTTY patch to act as a Cygwin terminal. If you're used to PuTTY, it can be very useful indeed. Me, 'll stick with the native Windows rxvt port.
  • Outwit - an interesting complement that provides command-line access to a few native Windows features.
  • unxutils - native Win32 ports of some common command-line utilities, useful for places where you don't want (or need) the full Cygwin environment.