Cygwinの環境設定
Cygwinの環境設定についての説明です。
ホームディレクトリの設定
ログインしたユーザーが使用するホームディレクトリ(ディレクトリ上の位置)を設定します。
ホームディレクトリの作成
Windows上の d:\cygwin
にCygwinのインストールを行っていれば、Cygwin起動時(bash起動時)にホームディレクトリが自動的に d:\cygwin\home\username
の様に生成されます。もしホームディレクトリが正しく生成されない場合には、mkdir
コマンドにてホームディレクトリを用意してください。
$ mkdir -p /home/username
注釈
- usernameは、Cygwinのログイン名です。
mkdir
コマンドのオプション-pは、親ディレクトリがなければ親ディレクトリも作成します。
ホームディレクトリへのマウントの追加
ホームディレクトリを指定のディレクトリに指定(変更)する場合は、ホームディレクトリへのマウントを追加します。マウントを行えば、Windows上のディレクトリをCygwin上のディレクトリに割り当て、例えば、WindowsのマイドキュメントとCygwinのホームディレクトリを共有することができるので、作業の利便化が図れます。
マウント情報の確認
先ずは、マウントを追加する前にマウント情報(マウントテーブル)を確認してみましょう。
下記は、Cygwinのインストールをデフォルトで完了している場合。
$ mount d:\cygwin\bin on /usr/bin type system (binmode) d:\cygwin\lib on /usr/lib type system (binmode) d:\cygwin on / type system (binmode) c: on /cygdrive/c type user (binmode,noumount) d: on /cygdrive/d type user (binmode,noumount) r: on /cygdrive/r type user (binmode,noumount)
マウントテーブルを見てみると、以上の様になっていることだと思います。
マウント追加例
Cygwin上の/home
でWindows上のc:\cygwin\home
の位置をWindows上のc:\home
にマウントします。
$ mount -b -s /cygdrive/c/home /home
以上で、Cygwinを利用するユーザ全てのホームディレクトリの親ディレクトリは、Windows上のc:\home
になります。よって、osamuraiというログイン名であれば、そのユーザのホームディレクトリはWindows上ではc:\home\osamurai
ということになります。
注釈
- アンマウント(マウントを削除)を行うには、
umount
でアンマウントするマウントを指定します。 - Windowsのマイドキュメントのリンク先(ターゲットフォルダの場所)とCygwinのホームディレクトリを同一ディレクトリに指定すれば作業が便利だと思います。
- Cygwin上の
/home
下にユーザ毎のホームディレクトリを作成する場合は、上記例を実行される必要はありません。
アカウント設定
Cygwinのアカウント設定(ユーザ情報の設定)は、Cygwinのインストールの際にセットアッププログラムが自動的に行っています。必要に応じて下記事項を参考にユーザ情報の編集を行いましょう。
尚、Windows 9x/MeにてCygwinを使用する際は、初期設定では、既定、或いは、unknown というユーザしか登録されていません。9x/Meに管理者の区別なんてありませんが、コンピュータを複数のユーザで使用する設定にしている場合には、一応グループ及びパスワードファイルを編集して利用した方が良いです。
グループファイルの作成と編集
グループファイルの作成
グループファイルを作成する際は、下記の様にコマンドを実行します。
$ mkgroup -l > /etc/group
グループファイルの内容
グループファイルの内容を確認してみましょう(次の出力例は、Windows 9x/Meの場合)。
$ cat /etc/group unknown::544:
グループの各情報は:
【spell: colon】区切りで次の様に構成されています。
groupname::groupid:username
- groupname
- グループ名
- groupid
- グループid
- username
- 所属ユーザ名
- 1グループに複数ユーザが所属する場合には、ユーザ名を
,
【spell: comma】区切りで列挙する。group1::500:user1,user2
注釈
- UNIXにおける「root(管理者)」は、NT系では「Administrators」に相当します。
- Windows 9x/Meでは、管理者とユーザの区別がありません。
グループファイルの編集
Cygwinでは、グループファイルの編集を行う場合には、Cygwinのviなどのエディッタを使用して手作業で編集を行う必要があります。
$ vi /etc/group
パスワードファイルの作成と編集
パスワードファイルの作成
パスワードファイルを作成する際は、下記の様にコマンドを実行します。
$ mkpasswd -l > /etc/passwd
パスワードファイルの内容
パスワードファイルの内容を確認してみましょう(次の出力例は、Windows 9x/Meの場合)。
$ cat /etc/passwd unknown::500:544::/home/unknown:/bin/bash
パスワードファイルの内容は、ユーザ毎にユーザの各情報は:
【spell: colon】区切りで次の様に構成されています。
username:password:userid:gropid:full name:home:shell
- username
- ログイン名
- password
- パスワード
crypt
コマンドによって暗号化された文字列$ crypt passwordphrase 79ZN8LKkeOTi6
- userid
- ユーザid
- gropid
- 所属グループ
- full name
- ユーザのフルネームなど
- home
- ホームディレクトリのパス
- shell
- 使用するシェルのパス
注釈
- UNIXにおける「root(管理者)」は、NT系では「Administrators」に相当します。
- Windows 9x/Meでは、管理者とユーザの区別がありません。
パスワードファイルの編集
Cygwinでは、パスワードファイルの編集を行う場合には、Cygwinのviなどのエディッタを使用して手作業で編集を行う必要があります。
$ vi /etc/passwd
ユーザ情報を表示する
幾つかのコマンドを使用すると、ユーザ情報の確認が行えます。
現在のCygwinには、UNIXのchfn
コマンド(ユーザ情報の変更)とfinger
コマンド(ユーザ情報の照会)は実装されてない(パッケージが無い)ようです。今後のバージョンではどうなるのでしょう?
whoami
- 自分自身のログイン名を表示
id
[option] [username]- 指定ユーザのユーザidやグループidを表示
hostname
- ホスト名を表示
ユーザ毎の環境設定
環境変数
Windowsの環境変数にCygwin起動に必要な環境変数が設定されてない場合には、必要に応じて以下の環境変数の設定を行います。
以下の例は、Windows 9x/Meの場合。
set CYGWIN=nontsec
set MAKE_MODE=UNIX
set SHELL=/bin/bash
CYGWIN
- ntsec 又は nontsec
- Windows NT/2000/XPのセキュリティモデルを利用してUNIX風のファイルとプロセスに対するパーミッション設定のサポート設定。値が、ntsecで有効、nontsecで無効となる。尚、FAT32上では使用できない。
- smbntsec 又は nosmbntsec
- 共有フォルダでも ntsec を有効にするかの設定。値が、smbntsecで有効、nosmbntsecで無効となる。
- glob
- UNIXスタイルのファイルワイルドカード文字をコマンドプロンプトからでも有効にする設定。尚、初期設定で有効になっている。
HOME
- ログインユーザーのホームディレクトリの設定。
MAKE_MODE
make
コマンドを実行する際にcommand.com
又は/bin/sh
のどちらを使用するかの設定。SHELL
- Cygwin上で使用するShellプログラムの設定。
注釈
HOME
変数は、アカウント設定(グループファイルとパスワードファイルの編集)を適切に行えば、設定する必要はないようです。
bash の設定
Cygwinのshellであるbashは、起動時に全てのユーザ共通の設定ファイル(/etc/profile
)を先ず解釈し、次にユーザ毎の設定ファイル(~/.bash_profile
, ~/.bash_login
, ~/.profile
の順番で何れか)を参照することで、ユーザ個別の環境設定を行います。
ユーザ毎に環境設定を行う必要があれば、ユーザ毎に設定ファイルをホームディレクトリに作成して編集を行います。
$ vi .bash_profile
編集が完了したら、[ESC]キーで文字入力モードからコマンドモードに切り替え、コマンドをZZと入力すると、上書き保存しviを終了します。
個別設定の例
以下は、私が使用している設定ファイルです。それぞれのファイルをホームディレクトリに作成し、適当に変更してご利用ください。
下記は、.bash_profile
の記述です。
LOGIN_SHELL=true
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
下記は、.bashrc
の記述です。
export SHELL=/bin/bash
export HOME=/home/username # username = ユーザ名
export TMPDIR=/tmp
export TEMP=/tmp
export TMP=/tmp
export MAKE_MODE=unix
PATH=/usr/local/sbin:/usr/sbin:/sbin:.:~/bin
PATH=/usr/local/bin:/usr/X11R6/bin:/usr/bin:/bin:$PATH
LANG=ja_JP.SJIS
TZ=JST-09
PAGER=less
EDITOR=vim
JLESSCHARSET=japanese-sjis
export PATH LANG PAGER EDITOR JLESSCHARSET
HISTFILE=~/.bash_history
HISTFILESIZE=100
HISTCONTROL=ignoreboth
HISTSIZE=100
export HISTFILE HISTFILESIZE HISTCONTROL HISTSIZE
# デフォルトと同様のプロンプトの表示
PS1='\[\033]0;\w\007
\033[32m\]\u@\h \[\033[33m\w\033[0m\]
$ '
if [ -n ${DISPLAY} ]; then
export DISPLAY=localhost:0.0
fi
if [ ! -n "${TERM}" ]; then
TERM=cygwin
fi
if [ -f ~/.aliases ]; then
. ~/.aliases
fi
cd $HOME
下記は、.aliases
の記述です。
alias ls="ls -aF --color=auto --show-control-chars"
alias la="ls -aF"
alias ll="ls -l"