Cygwinの環境設定

Cygwinの環境設定についての説明です。

ホームディレクトリの設定

ログインしたユーザーが使用するホームディレクトリ(ディレクトリ上の位置)を設定します。

ホームディレクトリの作成

Windows上の d:\cygwinCygwinのインストールを行っていれば、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"