/ (インストールしたトップディレクトリ:ここではc:\cygwin) + bin + cygdrive (Windowsのドライブがマウントされる) + etc + lib | + cvs | + gcc-lib | + ldscripts | + mingw | + perl5 | + texmf + usr | + bin (中は空、/bin がマウントされる) | + include | | + X11 | | + arpa | | + asm | | + cygwin | | + g++-3 | | + std | | + ... | + info | + lib (中は空、/lib がマウントされる) | + libexec | + local (中は空、ディレクトリだけが作られる) | + man | + sbin | + share + sbin + tmp (中は空だが必須) + var + log (中は空) + runルートディレクトリには、起動バッチファイルのCygwin.batが おいてあったりする。 /cygdriveの中は空だけど、/cygdrive/cとかすると、 WindowsのCドライブのルートが見える。 /devはないけど、/dev/nullとかはある(ls /dev/nullとか)。 /usr/bin、/usr/libはエクスプローラから見ると空。 Cygwinからだと、それぞれ/bin、/libが見える。 これについては次で。
$ mount Device Directory Type Flags C:\cygwin\bin /usr/bin system binmode C:\cygwin\lib /usr/lib system binmode C:\cygwin / system binmodeこんな感じになっているはず。このマウント情報をマウントテーブルという。 DeviceはWindowsでのパス。DirectoryはCygwinでのパスとなる。 Typeにはsystemとuserがあり、systemではマウントテーブルが インストールされているマシン全体で使われる(つまりレジストリの HKEY_LOCAL_MACHINE以下に保存される)のに対して、 userでは利用しているそのユーザでしか使われない (レジストリのHKEY_CURRENT_USER以下に保存される)。
$ mount --show-cygdrive-prefixes Prefix Type Flags /cygdrive user binmodeのようになっているのが分かる。/cygdriveが長くてやだ!という人は、 mountのオプション--change-cygdrive-prefixで変更することも可能。 このときも上で述べたFlagやTypeも注意して設定する必要がある。
NT4/2000(システムプロパティ→詳細→環境変数→ユーザ環境変数で) CYGWIN ntsec HOME /home/sohda MAKE_MODE UNIX SHELL /bin/bash 95/98/Me (autoexec.batで) set CYGWIN=nontsec set HOME=/home/sohda set MAKE_MODE=UNIX set SHELL=/bin/bashもし、Windowsのアプリケーションとぶつかって困る場合はCygwin.batに 書いちゃってもOKだと思う。
mkdir -p /home/sohda
# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi ulimit -c 0 umask 022 set history=200 set savehistory=200 set -o ignoreeof unset autologout export SHELL=/bin/bash export HOME=/home/sohda export TMPDIR=/tmp export TZ=JST-09 export MAKE_MODE=unix PATH=/usr/local/sbin:/usr/sbin:/sbin:.:~/bin PATH=/usr/local/bin:/usr/X11R6/bin:/usr/bin:/bin:$PATH PAGER=less JLESSCHARSET=japanese-sjis export PATH PAGER JLESSCHARSET PS1="$HOSTNAME:\w$ " if [ -n ${DISPLAY} ]; then export DISPLAY=localhost:0.0 fi if [ ! -n "${TERM}" ]; then TERM=cygwin fi alias ls="ls -F --color=auto --show-control-char" alias la="ls -aF" alias ll="ls -l" alias j=jobs alias vi=vim alias more=less SYSTEM=`cygpath -u ${SYSTEMROOT}`/system32 alias ping="$SYSTEM/ping.exe" alias arp="$SYSTEM/arp.exe" alias nslookup="$SYSTEM/nslookup.exe" alias traceroute="$SYSTEM/tracert.exe" alias route="$SYSTEM/route.exe" alias netstat="$SYSTEM/netstat.exe" alias ipconfig="$SYSTEM/ipconfig.exe" alias ifconfig=ipconfig #alias start="$SYSTEM/CMD.exe /c start" alias start=cygstart unset SYSTEMちなみに、Cygwin内部(つまりbashが起動しているとか)で環境変数 CYGWIN を 変更したりすると、よくないことが起こるそうなのでやめときましょう (.bashrcに書くとか)。
バッチ ジョブを終了しますか (Y/N)?といちいち聞かれてしまい、けっこううざい。おそらくCygwinのバグなんだろ うけど、まだ直ってない。これを解決する方法はCygwin.batを利用しない!しかない。 つまり、bashをいきなり起動するってこと。そのためには、 Cygwin.batでしている設定をWindows側でしてあげて、 bash.exeへのショートカットを作ってあげればOK。
mkpasswd -l > /etc/passwd mkgroup -l > /etc/groupオプションの -l は、ローカルマシンのユーザ・グループ情報を使う、 ということです。ドメインに参加しているマシンであれば、 -d オプションで、 ドメインのユーザ・グループ情報が利用されます。ちなみに各ファイルは 次のようになります。
/etc/passwd: Everyone:*:0:0:,S-1-1-0:: SYSTEM:*:18:18:,S-1-5-18:: Administrators:*:544:544:,S-1-5-32-544:: Administrator::500:513:,S-1-5-21-123412345-1234512345-1234512345-500:/home/Administrator:/bin/bash Guest::501:513:,S-1-5-21-123412345-1234512345-1234512345-501:/home/Guest:/bin/bash sohda::1000:513:Yukihiko Sohda,S-1-5-21-123412345-1234512345-1234512345-1000:/home/sohda:/bin/bash /etc/group: Everyone:S-1-1-0:0: SYSTEM:S-1-5-18:18: なし:S-1-5-21-123451234-1234512345-1234512345-513:513: Administrators:S-1-5-32-544:544: Backup Operators:S-1-5-32-551:551: Guests:S-1-5-32-546:546: Power Users:S-1-5-32-547:547: Replicator:S-1-5-32-552:552: Users:S-1-5-32-545:545:で、使わないユーザ・グループは編集して消してしまいましょう。 S-で始まるのはWindowsでのSID情報です。 inetutilsなどを使ってサーバを立ち上げたりしないなら、不用です。 オプションで -s をつければ、この情報は書き出されません。