2013-05-02 07:30:25 +08:00
|
|
|
<?xml version="1.0" encoding='UTF-8'?>
|
|
|
|
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook V4.5//EN"
|
|
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
|
|
|
|
|
|
|
|
<sect1 id="setup-env"><title>Environment Variables</title>
|
|
|
|
|
|
|
|
<sect2 id="setup-env-ov"><title>Overview</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
All Windows environment variables are imported when Cygwin starts.
|
|
|
|
Apart from that, you may wish to specify settings of several important
|
|
|
|
environment variables that affect Cygwin's operation.</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The <envar>CYGWIN</envar> variable is used to configure a few global
|
|
|
|
settings for the Cygwin runtime system. Typically you can leave
|
|
|
|
<envar>CYGWIN</envar> unset, but if you want to set one ore more
|
|
|
|
options, you can set it using a syntax like this, depending on the shell
|
|
|
|
in which you're setting it. Here is an example in CMD syntax:</para>
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
<prompt>C:\></prompt> <userinput>set CYGWIN=error_start:C:\cygwin\bin\gdb.exe glob</userinput>
|
|
|
|
</screen>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is, of course, just an example. For the recognized settings of the
|
|
|
|
<envar>CYGWIN</envar> environment variable, see
|
|
|
|
<xref linkend="using-cygwinenv"></xref>.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Locale support is controlled by the <envar>LANG</envar> and
|
2016-03-19 05:52:04 +08:00
|
|
|
<envar>LC_xxx</envar> environment variables. For a more detailed description
|
|
|
|
see <xref linkend="setup-locale"></xref>.
|
2013-05-02 07:30:25 +08:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The <envar>PATH</envar> 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. <filename>C:\Windows\system32;C:\Windows</filename>) to UNIX format
|
|
|
|
(e.g., <filename>/cygdrive/c/Windows/system32:/cygdrive/c/Windows</filename>)
|
|
|
|
when a Cygwin process first starts.
|
|
|
|
Set it so that it contains at least the <filename>x:\cygwin\bin</filename>
|
|
|
|
directory where "<filename>x:\cygwin</filename> is the "root" of your
|
|
|
|
cygwin installation if you wish to use cygwin tools outside of bash.
|
|
|
|
This is usually done by the batch file you're starting your shell with.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The <envar>HOME</envar> environment variable is used by many programs to
|
2015-02-16 18:23:01 +08:00
|
|
|
determine the location of your home directory. This environment variable,
|
|
|
|
if it exists, is converted from Windows format when a Cygwin process first
|
|
|
|
starts. However, it's usually set in the shell profile scripts in the /etc
|
|
|
|
directory, and it's <emphasis role='bold'>not</emphasis> recommended to set
|
|
|
|
the variable in your Windows environment.
|
2013-05-02 07:30:25 +08:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The <envar>TERM</envar> environment variable specifies your terminal
|
|
|
|
type. It is automatically set to <literal>cygwin</literal> if you have
|
|
|
|
not set it to something else.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>The <envar>LD_LIBRARY_PATH</envar> environment variable is used by
|
|
|
|
the Cygwin function <function>dlopen ()</function> 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
|
|
|
|
<function>dlopen ()</function> call and do not need this variable.
|
|
|
|
</para>
|
|
|
|
|
2016-03-11 15:56:56 +08:00
|
|
|
<para>The <envar>GMON_OUT_PREFIX</envar> environment variable is helpful
|
|
|
|
in some situations when profiling Cygwin programs. For more information,
|
|
|
|
see <xref linkend="gprof-fork"></xref>. Only software developers with a
|
|
|
|
need to profile their programs have a use for this variable.
|
|
|
|
</para>
|
|
|
|
|
2013-05-02 07:30:25 +08:00
|
|
|
<para>
|
|
|
|
In addition to <envar>PATH</envar>, <envar>HOME</envar>,
|
2016-03-11 15:56:56 +08:00
|
|
|
<envar>LD_LIBRARY_PATH</envar>, and <envar>GMON_OUT_PREFIX</envar>,
|
|
|
|
there are three other environment
|
2013-05-02 07:30:25 +08:00
|
|
|
variables which, if they exist in the Windows environment, are
|
|
|
|
converted to UNIX format: <envar>TMPDIR</envar>, <envar>TMP</envar>,
|
|
|
|
and <envar>TEMP</envar>. The first is not set by default in the
|
|
|
|
Windows environment but the other two are, and they point to the
|
|
|
|
default Windows temporary directory. If set, these variables will be
|
|
|
|
used by some Cygwin applications, possibly with unexpected results.
|
|
|
|
You may therefore want to unset them by adding the following two lines
|
|
|
|
to your <filename>~/.bashrc</filename> file:
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
unset TMP
|
|
|
|
unset TEMP
|
|
|
|
</screen>
|
|
|
|
|
|
|
|
This is done in the default <filename>~/.bashrc</filename> file.
|
|
|
|
Alternatively, you could set <envar>TMP</envar>
|
|
|
|
and <envar>TEMP</envar> to point to <filename>/tmp</filename> or to
|
|
|
|
any other temporary directory of your choice. For example:
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
export TMP=/tmp
|
|
|
|
export TEMP=/tmp
|
|
|
|
</screen>
|
|
|
|
</para>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2 id="setup-env-win32"><title>Restricted Win32 environment</title>
|
|
|
|
|
|
|
|
<para>There is a restriction when calling Win32 API functions which
|
|
|
|
require a fully set up application environment. Cygwin maintains its own
|
|
|
|
environment in POSIX style. The Win32 environment is usually stripped
|
|
|
|
to a bare minimum and not at all kept in sync with the Cygwin POSIX
|
|
|
|
environment.</para>
|
|
|
|
|
|
|
|
<para>If you need the full Win32 environment set up in a Cygwin process,
|
|
|
|
you have to call</para>
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
#include <sys/cygwin.h>
|
|
|
|
|
|
|
|
cygwin_internal (CW_SYNC_WINENV);
|
|
|
|
</screen>
|
|
|
|
|
|
|
|
<para>to synchronize the Win32 environment with the Cygwin environment.
|
|
|
|
Note that this only synchronizes the Win32 environment once with the
|
|
|
|
Cygwin environment. Later changes using the <function>setenv</function>
|
|
|
|
or <function>putenv</function> calls are not reflected in the Win32
|
|
|
|
environment. In these cases, you have to call the aforementioned
|
|
|
|
<function>cygwin_internal</function> call again.</para>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
</sect1>
|