Table of Contents

What is Cygwin? Linux env for Windows

What Is Cygwin ?

Cygwin is a Linux-like environment under Windows.

Cygwin consists of:

Standard Windows command line tools can even be intermixed within the UNIX/Linux shell script environment to administer the Windows system.

Management

Installation

Packages can be installed later by re-running Setup.exe.

Directory Structure

The installation directory (by default, c:\cygwin) is the root of the Unix-like file system, which contains bin, etc, home, tmp, and usr directories as would be found on a GNU/Linux or other Unix system.

After the Shell launch, the current (working) directory is the %HOME% env or by default the /home/user, where user is your Windows login name.

Automatic mount points Description Example
/usr/bin the installation directory C:/cygwin64/bin
/usr/lib the /lib directory. C:/cygwin64/lib

This choice is safe and usually shouldn't be changed. An fstab entry for them is not required.

How to begin / start the shell

To open a Cygwin terminal window:

Within this window, the GNU bash shell is running, with POSIX syntax (directory separators are '/', not '\').

The shell Cygwin.bat is located in the root installation directory of Cygwin.

@echo off

C:
chdir C:\cygwin64\bin

bash --login -i

Initially, the current (working) directory is /home/user, where user is your Windows login name.

Advantages

Snippet

Path usage

Single Quote the windows path

cd 'c:\wherever'

More … https://cygwin.com/cygwin-ug-net/using-effectively.html#using-pathnames-effectively

Execute In Program files

"$(cygpath -u 'C:\Program Files\ojdkbuild\java-11-openjdk-11.0.15-1\bin\java.exe')" --version

Path conversion

# CYGINW == 1 if Cygwin is detected, else 0.
if [[ $(uname -a) =~ "CYGWIN" ]]; then
  CYGWIN=1
else
  CYGWIN=0
fi

# If Cygwin is detected, a DIR variable must be converted to Windows format.
(( CYGWIN )) && ADIR=$(cygpath --path --mixed "${ADIR}")

Support

My Windows logon name has a space in it

Don't use this directory if your Windows login name contains a space; make another and use that one instead, e.g., by typing these commands at the bash prompt:

mkdir /home/bob
echo "export HOME=/home/bob" >>.bashrc
echo "export HOME=/home/bob" >>.bash_profile
cp .bashrc .bash_profile /home/bob
echo "cd" >>.bashrc

Close your Cygwin terminal window and open another one; your current directory should now be /home/bob (or whatever you chose to call it). See the Cygwin FAQ (look for “My Windows logon name has a space in it”) for other solutions to this common problem.

Documentation / Reference