/ (インストールしたトップディレクトリ:ここでは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 をつければ、この情報は書き出されません。