The first thing you'll need is the Cygwin setup.exe file from Cygwin. Once it's downloaded run the setup.exe file. It
will ask some questions and then present a list of things to download and install. The
most important thing is to select a place to put it. I suggest a separate partition
from the Windows partition (Drive C) since Cygwin is a fairly large and complex
install (see more on partitioning here).
The setup will open a window with a long list of things available to install. Some of
these items are fluff of course so go through the list and select stuff you really
want and ignore the rest. What's neat about the setup.exe install method is that you
can re-run it whenever you want and add or remove the odds and ends from the previous
install. This helps you to configure Cygwin any way you want as often as you want.
Once the initial install completes go to the cygwin directory. You'll see a cygwin.bat
file that has the startup commands. Since it starts from Windows as a batch file it
uses batchfle style commands:
@echo off
echo.
echo.
echo.
echo.
echo.
echo Welcome to Bill's Computer *** All Accesses are Logged ***
echo.
set CYGWIN=tty notitle glob
/cygwin/bin/bash -l
The actual command to start cygwin is the line, bash -l. We're telling cygwin
to execute bash as a login shell rather than simply running a command. This gives you
the option of configuring you own environment. Here an excerpt from the bash manual
entry:
"When bash is invoked as an interactive login shell, or as a non-interac
tive shell with the --login option, it first reads and executes commands
from the file /etc/profile, if that file exists. After reading that file,
it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that
order, and reads and executes commands from the first one that exists and
is readable."
What this means is that you can create a .bash_profile file in your HOME directory
that contains commands you want to run every time you login (I'm assuming that you
are somewhat familiar with the way Linux does things but if you're not, check here for some help). Here's a sample
.bash_profile file:
export PS1='${PWD#*}> '
export HOME=/home/acme
export TERM=ansi
alias spell='aspell check'
alias web='cd /cygdrive/d/Apache2.2/htdocs'
alias webpages='cd /cygdrive/e/webserver/webpages/Bill'
alias c='cd /cygdrive/c'
alias d='cd /cygdrive/d'
alias e='cd /cygdrive/e'
alias find='find /cygdrive/e/cygwin '
The PS1 variable is the prompt set to display only the current directory, a space and a > sign.
You can set this to just about anything but the version here is the one I always use.
The export directive tells the shell that the variable is to be available in all
subsequent sub-shells. The alias commands just substitute an existing command with one
you create, like a macro. Notice that cygwin starts it's path with the root drive
(partition where it's installed) flowed by the directory where it's installed. In the
cygwin install directory is a sub-directory named, cygdrive. In this directory are
sub-directories to every partition on the disk (assuming there are any). To have
cygwin locate a file or directory, create an alias pointing to the cygwin path.
From this point on you'll have a Linux environment every time to run the
\cygwin\cygwin.bat file. But wait! You can do more. By adding the cygwin system
directories to the Windows PATH variable, you can have all the Linux commands you know
and love available from even the Windows command prompt. Go to Start -> Settings ->
Control Panel -> System -> Advanced system settings -> Environment Variables and look
for PATH. Select Path and then edit and add the cygwin executables paths (this
is all one line):
C:\Program Files%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;e:\cygwin\bin;e:\cygwin\sbin;e:\cygwin\usr\x11r6\bin;
Notice two things here: it's a real pain to set the Windows variables because of all
the menus you have to navigate and, secondly, you can modify the PATH to arrange
executables in whatever order you want. If you put the cygwin paths at the beginning
of PATH variable, they will execute before a Windows command of the same name.
After all this you can now access the cygwin commands from a Windows command prompt
or, optionally, execute the cygwin.bat batch file to login into the full cygwin
environment. But you can do even more! Add Xwindows and you can run an xterm window
with all the handy stuff xterm provides (copy-paste being what I use most). Cygwin has
an x-server you can run from \cygwin\usr\x11r6\bin\startxwin.bat or, if in the cygwin
environment (logged into cygwin), /cygwin/usr/x11r6/bin/startxwin.sh and you'll have an
xwindow server running.
Edit the startxwin file and modify the line that starts xterm with whatever option you
like (this is all one line):
xterm -geometry 91x50+180+30 -e /bin/bash -l
I had some trouble with the cygwin x-server so I switched to Xming And it works with no problems. I also generally use at
least two xterms so I can copy and past between them.
Once you've configured your new Cygwin (Linux) environment, you can access all the
commands and utilities it offers and create your own shell scripts to manage things
much more efficiently (and a lot faster) in Windows. What's especially cool is that
you now have all the Linux stuff available from the Windows command prompt (if you
modified the Windows PATH variable) so you can run Linux commands as easily as Windows
commands.
You can re-run the Cygwin
setup.exe file any time to add or remove features so, if you miss something on the
initial install, re-run setup.exe and select that feature. Cygwin will download and
install it. Since most configuration files are plain text, you can easily modify a
program by editing its configuration file. Cygwin even includes a good implementation
of the vi editor (see this) for this kind of thing. For those of us who
prefer a Linux environment but have to work in Windows, Cygwin is an excellent
choice that provides all the good stuff.