Environment Variables
Before starting bash, you may set some environment variables. A .bat
file is provided where the most important ones are set before bash in
launched. This is the safest way to launch bash initially. The .bat
file is installed in the root directory that you specified during setup
and pointed to in the Start Menu under the "Cygwin" option. You can
edit it this file your liking.
The CYGWIN variable is used to configure many global
settings for the Cygwin runtime system. Initially you can leave
CYGWIN unset or set it to tty (e.g.
to support job control with ^Z etc...) using a syntax like this in the
DOS shell, before launching bash.
C:\> set CYGWIN=tty notitle glob
The PATH environment variable is used by Cygwin
applications as a list of directories to search for executable files
to run. This environment variable is converted from Windows format
(e.g. C:\WinNT\system32;C:\WinNT) to UNIX format
(e.g., /WinNT/system32:/WinNT) when a Cygwin
process first starts.
Set it so that it contains at least the x:\cygwin\bin
directory where "x:\cygwin is the "root" of your
cygwin installation if you wish to use cygwin tools outside of bash.
The HOME environment variable is used by many programs to
determine the location of your home directory and we recommend that it be
defined. This environment variable is also converted from Windows format
when a Cygwin process first starts. Set it to point to your home directory
before launching bash.
The TERM environment variable specifies your terminal
type. It is automatically set to cygwin if you have
not set it to something else.
The LD_LIBRARY_PATH environment variable is used by
the Cygwin function dlopen () as a list of
directories to search for .dll files to load. This environment variable
is converted from Windows format to UNIX format when a Cygwin process
first starts. Most Cygwin applications do not make use of the
dlopen () call and do not need this variable.
Customizing bash
To set bash up so that cut and paste work properly, click on the
"Properties" button of the window, then on the "Misc" tab. Make sure
that "Quick Edit" is checked and "Fast Pasting" isn't. These settings
will be remembered next time you run bash from that
shortcut. Similarly you can set the working directory inside the
"Program" tab. The entry "%HOME%" is valid.
Your home directory should contain three initialization files
that control the behavior of bash. They are
.profile, .bashrc and
.inputrc. These initialization files will only
be read if HOME is defined before starting bash.
.profile (other names are also valid, see the bash man
page) contains bash commands. It is executed when bash is started as login
shell, e.g. from the command bash --login (the provided
.bat file does not set the switch). This is a useful place to define and
export environment variables and bash functions that will be used by bash
and the programs invoked by bash. It is a good place to redefine
PATH if needed. We recommend adding a ":." to the end of
PATH to also search the current working directory (contrary
to DOS, the local directory is not searched by default). Also to avoid
delays you should either unset MAILCHECK
or define MAILPATH to point to your existing mail inbox.
.bashrc is similar to
.profile but is executed each time an interactive
bash shell is launched. It serves to define elements that are not
inherited through the environment, such as aliases. If you do not use
login shells, you may want to put the contents of
.profile as discussed above in this file
instead.
shopt -s nocaseglob
will allow bash to glob filenames in a case-insensitive manner.
Note that .bashrc is not called automatically for login
shells. You can source it from .profile.
.inputrc controls how programs using the readline
library (including bash) behave. It is loaded automatically. The
full details are in the readline.info.
Due to a bug in the current readline version,
.inputrc cannot contain \r,
even on text mounted systems.
Consider the following settings:
# Make Bash 8bit clean
set meta-flag on
set convert-meta off
set output-meta on
# Ignore case while completing
set completion-ignore-case on
The first three commands allow bash to display 8-bit characters,
useful for languages with accented characters. The last line makes
filename completion case insensitive, which can be convenient in a
Windows environment.