There are plenty of solutions for achieving linux environment in Windows.
1)Installing Cygwin creates linux environment. But all programs are not supported by cygwin. Also it may create problems in newer versions of windows. It consists of two parts:
# A DLL (cygwin1.dll) which acts as a Linux API emulation layer providing substantial Linux API functionality.
# A collection of tools which provide Linux look and feel.
Problems regarding cygwin
# Cygwin is not a way to run native linux apps on Windows. You have to rebuild your application from source if you want it to run on Windows.
# Cygwin is not a way to magically make native Windows apps aware of UNIX functionality, like signals, ptys, etc. Again, you need to build your apps from source if you want to take advantage of Cygwin functionality