環境ファイル

ここでは、Linux における各種環境ファイルについて説明する。


システム共通環境ファイル

  1. 初期起動スクリプト

    ここでは、システムのブート時からログインまでに自動的に実行される、 各ユーザに共通した初期起動スクリプトについて紹介する。 これらはすべてシェルスクリプト(いわゆるバッチファイル)なので、 vi で内容を自由に閲覧、変更できる。 ただし変更すると影響が大きいので、 本当に変更する場合以外は root では開けないようにすること。 また、特に記述しない限り変更しない方が無難である。

    なお、初期起動スクリプトについては Unix 同士のみならず、 同じ Linux でもディストリビューション毎に名称や内容が異なる。 ここで採用した Plamo Linux は Slackware というディストリビューションの 流れをくむもので、初期起動スクリプトに関しては、SunOS などで採用 されていた BSD 系に似ている。

    パス 説明 備考
    /etc/inittab カーネル起動後、最初に実行されるスクリプト 詳細は man inittab を参照のこと
    /etc/rc.d/rc.S シングルユーザ用初期化スクリプト /etc/inittab から呼ばれる。
    /etc/rc.d/rc.modules モジュール組み込み用スクリプト /etc/rc.d/rc.S から呼ばれる。 モジュールとしてメイクしたドライバのうち、 自分が使用するものについては、このファイルを変更する。
    /etc/rc.d/rc.M マルチユーザ用初期化スクリプト /etc/inittab から呼ばれる。 システムがらみのデーモンを起動したり、 以下のスクリプトを呼び出したりしている。
    18 行目の setterm により、 コンソールで一定時間キーボード入力がないと画面を真っ暗にする制御を 行っている。この機能を無効にしたければ、 この行をコメントアウトすればよい。以下同様。
    ※デーモンとは、システムに常駐してクライアントからの接続要求を待ち、 決まったサービスを提供するプログラム群の総称である。 Windows NT でサービスと呼ばれるものとほぼ同様。 本当に常駐するものと、inetd(インターネット・スーパーサーバ)から 起動されるものの二種類がある。
    /etc/rc.d/rc.inet1 ネットワーク I/F 初期化スクリプト /etc/rc.d/rc.M から呼ばれる。
    LAN I/F (eth0, eth1,...) に関する IP アドレスの設定や ルーティングの設定などを行っている。これらの設定は netconfig コマンドの実行により上書きされる。
    /etc/rc.d/rc.inet2 ネットワーク・デーモン起動用スクリプト /etc/rc.d/rc.M から呼ばれる。
    /etc/rc.d/rc.local ユーザレベル初期化スクリプト /etc/rc.d/rc.M から呼ばれる。
    システム標準でないデーモンなどを起動するため、ユーザが自由に追加する。 このスクリプトを実行し終わると、login: プロンプトが表示され、 ユーザがログインできるようになる。

  2. ログイン・スクリプト

    ここでは、ユーザがログインする際に、 システムで共通に使用されるスクリプトについて記述する。

    シェル 起動起動スクリプト 備考
    /bin/bash /etc/profile ログイン時にごちゃごちゃと英語の格言が表示されるのは、 このスクリプトの最後にある fortune が犯人であるので、 じゃまであればコメントアウトする。 また、数行上の biff はメールの到着を知らせるコマンドで、 これも必要に応じて削除する。
    /bin/tcsh /etc/csh.login シェルとして tcsh(csh) を使う場合に参照される。

  3. その他の設定ファイル

    シェルスクリプトではない設定ファイルについて説明する。

    ファイル名 機能 備考
    /etc/passwd ユーザ認証用ファイル 各行は ユーザ名:パスワード:.... となっている。 さらに Plamo Linux では Shadow Password が採用されており、 パスワードフィールドは 'x' になっていて、実際のパスワードは /etc/shadow に書きこまれている。 パスワード('x')のところを削除して ユーザ名::... となるように すればパスワードを聞いてこなくなる。 詳細は man 5 passwd を参照のこと。
    /etc/hosts ホスト名←→IPアドレス変換用ファイル DNS なしの環境では必須。なお、netconfig コマンドの実行により 上書きされるので注意。
    /etc/hosts.deny アクセス制御ファイル アクセスを許可しないホスト/ドメインのリストを記述する。 Plamo のデフォルトでは ALL : ALL となっており、 他のホストからの接続を全く許可しない設定となっている。 とりあえずはこのファイルを hosts.deny.orig とかの別の名前に リネームしてやれば接続できるようになる。 ただし、外からアクセスできる環境にマシンを設置する場合は、 このファイルはそのままにしておき、後述の hosts.allow で アクセス制御をするべきである。
    /etc/hosts.allow アクセス制御ファイル アクセスを許可するホスト/ドメインのリストを記述する。 詳細は man hosts_access を参照のこと。

ユーザ別環境ファイル

ユーザ別環境ファイル

ここでは、ログイン時のユーザ設定ファイルについて紹介する。 特に記述しない限り、これらはシェルスクリプト(いわゆるバッチファイル) なので、vi で内容を自由に閲覧、変更できる。 ここは好みに応じてどんどんカスタマイズしよう。 なお、これらのファイルはすべてユーザのホームディレクトリ直下にある。

パス 説明 備考
.bash_profile シェルに /bin/bash を使用する場合、 ログイン時に最初に起動されるスクリプト。 Plamo のデフォルトではこのファイルは存在しない。 以下の内容で作成しておこう。
#!/bin/bash
source ~/.bashrc
これにより、ログイン時に後述の .bashrc が自動実行されるようになる。
.bashrc シェル初期化ファイル

シェルを開くたびに起動される。 ここで良く使うコマンドなどを定義しておく。 おすすめの定義を以下に示すので、適宜取捨選択して欲しい。

IGNOREEOF=3

[Ctrl]+D を押しても即時にログアウトしない。 3回押されたらログアウトする。 これをコメントアウトし、

unset ignoreeof
をセットすれば、[Ctrl]+D で即時にログアウトするようになる。

PS1='\h:\w\$ '

プロンプトの設定。この場合プロンプトは

ホスト名:カレントディレクトリ $
のようになる。ホスト名の前に現在のユーザ名を表示したい場合は、
PS1='`whoami`@\h:\w\$ '
のように変更する。なお、whoami を囲んでいる文字は '(シングルクォート)ではなく `(バッククォート)であるので注意。

alias virc='vi ~/.bashrc; source ~/.bashrc'

virc コマンドを実行すると .bashrc が開くので自由に編集する。 書きこんで vi を終わらせたら、書きこんだ内容を即時に反映させる。 source コマンドを実行しないと、 変更は次のログイン時にしか反映されない。 alias はエイリアス(コマンドの別名)を定義するための、bash の内部コマンド。

alias cp='cp -p'

cp(コピー)時に、 特に指定しなくてもタイムスタンプをコピーするようにする。

alias cdk='cd /usr/src/linux'

cdk というコマンドで、cd /usr/src/linux するようにする。

alias x='startx>&~/x.err'

x というコマンドで X Window を起動し、かつ起動時のメッセージは x.err というファイルにリダイレクトするようにする。

alias log='tail -f /var/log/messages'

log というコマンドで、システムのログファイルを監視するようにする。 ただしデフォルトではこのファイルは root 以外不可視となっているので、 root で chmod 644 /var/log/messages しておかないと意味がない。

# テキストファイルを euc に変換する。
# 使用法:toeuc ファイル名(複数可)
function toeuc () {
    for i in $*
    do
        nkf -e $i > $i.euc
        mv $i.euc $i
    done
}
見ての通り。 bash の alias 内部コマンドは引数を取ることができないので、 複雑なエイリアスは関数として定義する。 要するに、スクリプト中で関数スクリプトを書いているというわけである。
# n 秒ごとにコマンドを実行する。デフォルトは 1 秒。Ctrl+C で終了。
# 使用法:loop コマンド
function loop () {
    local interval=1
    while [ 1 ]
    do
        $*
        sleep $interval
    done
}
見ての通り。
.jvimrc vi(jvim) の起動用スクリプト Plamo のデフォルトでは、次のようになっている。
set nobackup notextauto
その他、以下のものがおすすめ。詳細は vi を起動して :h。
set backspace=2
バックスペースで既存の文字も削除
set expandtab
タブ文字をスペースに展開する
set tabstop=4
タブ文字を4個のスペースとする
set errorbells
エラー時にベルを鳴らす
.canna Canna 用かな漢変換設定ファイル Plamo のデフォルトでは存在しない。 以下のようにすると、ATOK と同様の設定になる。
rcx02:~$ ln -s /usr/local/canna/lib/sample/just.canna .canna

X 用環境ファイル

X 用環境ファイル

ここでは、X Window System に関するユーザ設定ファイルについて紹介する。 ここは好みに応じてどんどんカスタマイズしよう。 なお、これらのファイルはすべてユーザのホームディレクトリ直下にある。

パス 説明 備考
.Xdefaults X アプリケーションのデフォルト環境設定ファイル おすすめの設定を以下に示す。 存在する場合は修正すること。 行頭の ! はコメント行を示す。
kterm*background: Black  ←kterm の背景を黒に
kterm*foreground: White
kterm*cursorColor: Orchid
! 以下、デフォルトから変更
KTerm*fontList: kanji14
KTerm*boldFontList: kanji14
(これ以外は '!' でコメントアウトする)
.xinitrc X アプリケーションの自動起動スクリプト おすすめの設定を以下に示す。存在する場合は修正すること。 行頭の # はコメント行を示す。
# unclutter は一定時間動かないカーソルを隠すプログラムです。
# unclutter &           ←コメントアウト
# 日本語のカレンダー
#exec xcalendar -geometry 235x215+0+600 &
#xcalendar &            ←コメントアウト
# X Window が一定時間利用されない時に画面をロックします。
#xset s noblank &       ←コメントアウト
#kterm -vb -km euc -geometry 80x30+10+10 -bg cornsilk &
                        ←コメントアウト
.fvwm95rc ウィンドウマネージャ fvwm95 の設定ファイル

注意
X Windows System では Microsoft Windows と違って、 Look & Feel(見た目や操作方法)を司る部分がウィンドウマネージャという アプリケーションで実装されており、これを入れ替えることにより ユーザ毎に異なったLook & Feel を実現できる。 今回は adduser で fvwm95 を選択させたのでウィンドウマネージャは fvwm95 が立ち上がるようになっている。 慣れてきたら、好みで別のウィンドウマネージャを使用しても構わない。

  • その他
    Style "*" ClickToFocus
    Style "*" SloppyFocus    ←追加(カーソルが入ったらウィンドウをアクティブに)