トップ

当実験室について

室長プロフィール

報告書

日報

準備室
トップ報告書 → Cygwinを使い倒そう   【2】環境変数設定編
■Cygwinを使い倒そう

【2】 環境変数設定編

 Cygwin関係で設定する環境変数は次の通りである。

ユーザー環境変数説明室長のお奨め値
HOME Cygwin環境でのホームディレクトリを設定。/home/ の後にWindowsにログインする際のユーザ名が続く形になる。ユーザ名に漢字などのマルチバイト文字を使っている場合はCygwin用にマルチバイト文字じゃないユーザ名を作成して使用するコトをお奨めする。 /home/<ユーザ名>
SHELLCygwin環境で使用するシェルを設定。使用可能なシェルはいくつかあるが室長的には /bin/bash か /bin/tcsh をお奨めしたい。 /bin/bash

システム環境変数説明室長のお奨め値
CYGWINCygwinの動作を指定するオプション値を設定する。指定可能なオプション値については後述する。ntsec ntea server
MAKE_MODECygwinでmakeコマンドを使用する時に command.com を使うか /bin/ls を使うかを設定する。特に理由がなければ /bin/ls を使う様に UNIXと設定するのが無難である。UNIX
Pathこの環境変数はCygwin固有のモノではないので設定には注意するコト。Cygwinのコマンドやランタイムライブラリのある場所を指定している。Cygwinインストール時のインストール先の指定内容によるがデフォルトのままなら C:\Cygwin\bin を「;C:\Cygwin\bin」という形で追加する。インストール時に室長と同じ様に指定した場合は「;D:\bin」を追加する。D:\bin
TZこの環境変数はCygwin固有のモノではないので既に設定されている場合は変更する必要は無い。使用しているPCのタイムゾーンを指定する。JST-9

 システム環境変数 CYGWIN で設定可能なオプションは次の通りである。

設定可能値説明デフォルト値
(no)dosfilewarningユーザがPOSIXスタイルのパス名ではなく、MS-DOSスタイルのパス名を使用した時に警告メッセージを表示するかどうかの設定をする。デフォルトは警告メッセージを表示する。dosfilewarning
(no)envcacheWin32とPOSIXの間での環境変数の変換をキャッシュするかどうか設定する。キャッシュしている場合、マウントテーブルが変更されても変更前のキャッシュ内容に依存している値が含まれたままになっていると問題が発生する可能性があるので注意する。デフォルトはキャッシュする。envcache
(no)exportこのオプションが有効に設定されているとこれらの設定値の最終的な値が「CYGWIN」として再設定される。デフォルトは無効。noexport
error_start:Win32filepathCygwinで致命的なエラーが発生した時に「Win32filepath」に設定されたプログラムを起動する。これはデバック時に便利である。「Win32filepath」には通常「gdb」又は「dumper」へのパスを設定する。例えば「C:\Cygwin\bin\gdb.exe」の様に設定する。デフォルトでは未設定。
forkchunk:sizeシステムコール fork()が一度に何バイトコピーするのかを設定する。「forkchunk:32768」とした場合は一度に32768バイト(32KB)をコピーする。デフォルトでは可能な限り最大バイト数をコピーする。これはほとんどのケースにおいては望ましい動作ではあるが一部の古いシステムの動作を遅くする。
proc_retry:n子プロセスが特定のWindows固有のエラーで起動に失敗した時にシステムコール fork() と exec*() がn回試行される。これらのエラーはユーザがログオフしている間にプロセスが起動されると通常発生する。
(no)glob[:ignorecase]このオプションが有効に設定されているとUNIXスタイルの正規表現文字([]、?、*、\によるエスケープ)を含むコマンドライン引数はそれらの正規表現に一致したファイルのリストに展開される。これはDOSコマンドラインから実行されるプログラムに対してのみ行われる。デフォルトでは設定。

このオプションは「[no]ignorecase」を追加で設定できる。設定した場合は正規表現でのマッチングで大文字小文字を区別しない。デフォルトは noignorece である。

glob:noignorecase
(no)reset_comこのオプションが設定されているとシリアルポートはフロー制御なし、9600bps、8ビット、ノンパリティ、ストップビット1ビットにリセットされる。これはオープン時及びハンドルが引き継がれた時に行われる。デフォルトでは設定。reset_com
(no)strip_titleこのオプションが設定されているとウィンドウタイトルからディレクトリ部分が取り除かれる。デフォルトでは未設定。nostrip_title
(no)titleこのオプションが設定されているとタイトルバーには現在実行中のプログラム名が表示される。デフォルトでは未設定。notitle
(no)ttyこのオプションが設定されているとCygwinはWindowsコンソールでUNIX風のtty制御(termios)が可能となる。これは一部のWindowsプログラムと互換性は無い。デフォルトは未設定でttyはテキストモードでオープンされている。このオプションが設定されると ^Z に代わり ^D が期待通りに動作するようになり、 stty による設定可能となることに注意する。このオプションはCygwinシェルを起動する前に指定されていなければならず、シェルで変更することは出来ない。他の端末(minttyやxterm)を使用する時には指定しない様にするべきである。notty
(no)upcaseenvこのオプションが設定されていると非CygwinプロセスからCygwinプロセスが起動された場合にCygwinは全ての環境変数を大文字に変換する。Cygwin 1.7より前のバージョンではこれがデフォルトだった。このオプションが設定されない場合はCygwinは必要最低限の下位互換性及び特定の環境変数を正しく取り扱う為に環境変数の大文字小文字は変換しない。常に大文字に変換される環境変数は以下の通り。

ALLUSERSPROFILE
COMMONPROGRAMFILES
COMPUTERNAME
COMSPEC
HOME
HOMEDRIVE
HOMEPATH
NUMBER_OF_PROCESSORS
OS
PATH
PATHEXT
PROCESSOR_ARCHITECTURE
PROCESSOR_IDENTIFIER
PROCESSOR_LEVEL
PROCESSOR_REVISION
PROGRAMFILES
SYSTEMDRIVE
SYSTEMROOT
TEMP
TERM
TMP
TMPDIR
WINDIR

noupcaseenv
(no)winsymlinksこのオプションが設定されているとCygwinは特別なヘッダ及び読み取り専用属性が設定されたWindowsショートカットをシンボリックリンクとして作成する。設定されていないとCygwinは特定のマジックナンバ、パス及びシステムの属性を持った通常ファイルとしてシンボリックリンクを作成する。通常ファイルのシンボリックリンクは読み書きが速い為、デフォルトでは未設定。

新しいシンボリックリンクでは対象ファイル名のエンコードにUTF-16を使用しており、古いシンボリックはANSIあるいはOEM文字セット使用している為、Cygwin 1.7以降で作成したシンボリックリンクは古いCygwinのリリースでは読めないので注意が必要。

nowinsymlinks

 Cygwinのバージョンが1.7になって廃止されたオプションは次の通りである。

設定可能値説明デフォルト値
(no)binmodeシステムコール open() の呼び出しで明示的に指定しない限りはデフォルトで binary mode でオープンする様になったのでこのオプションは廃止された。
check_caseこのオプションは大文字と小文字の区別をファイルシステムがサポートしているかどうかに依存する様になったので廃止された。詳細についてはセクション "The Cygwin Mount Table" と "Case sensitive filenames" を参照する事。
codepage:[ansi|oem]このオプションはファイルとコンソールの操作で使用される文字コードを設定する。Cygwinは現状ではアプリケーションからの setlocale() 関数の呼び出しに応じて環境変数($LANG → $LC_ALL → $LC_CTYPEの順で適用される)の設定に従って全ての文字変換を行なっているのでこの設定を行う必要は無くなった。
(no)nteaこのオプションはセキュリティ上において危険で且つ必要無いと判断されて削除された。
(no)ntsecこのオプションはマウントオプション acl / noacl と同等なので削除された。詳細についてはセクション "The Cygwin Mount Table" を参照する事。
(no)serverもともとこのオプションは cygserver で提供されている機能をクライアント側で使用する際に設定する必要があった。cygserver を必要とする関数がコールされた場合、Cygwinは必ず cygserver に接続を試みる様になったのでこのオプションは削除された。詳細についてはセクション "Cygserver" を参照する事。
(no)smbntsecこのオプションはマウントオプション acl / noacl と同等なので削除された。詳細についてはセクション "The Cygwin Mount Table" を参照する事。
(no)transparent_exe現状のCygwin ではこのオプションを有効とするのが一般的なのでこのオプションは削除された。
(no)traverseこのオプションは走査チェックが Microsoft によって正しく実装されていないので現時点では削除されている。