If you run the cygwin X server, then you can just run bash inside an xterm or rxvt or whatever. It almost, almost feels like a normal Unix situation except key things are broken. Most notably (to me, at any rate), if I start up ssh-agent and then run another xterm, it doesn't inherit the environment variables from the old shell, so I have to set the appropriate environment variables in the new shell.