Most of my scripts run unmodified between Cygwin and Linux (OSX is a different story, if you don't have GNU tools on the path).
The single biggest problem with Cygwin is performance: forking is very slow. When I need to rewrite a script for Cygwin, it's almost invariably to reduce the number of processes spawned.
But almost all of the time, it just works, even building third-party stuff from source. On my home setup, I spend about half my terminal time with Cygwin, the other half in ssh sessions to Linux boxes, and there's no real mental context switch required.
The single biggest problem with Cygwin is performance: forking is very slow. When I need to rewrite a script for Cygwin, it's almost invariably to reduce the number of processes spawned.
But almost all of the time, it just works, even building third-party stuff from source. On my home setup, I spend about half my terminal time with Cygwin, the other half in ssh sessions to Linux boxes, and there's no real mental context switch required.