ユーザーのホームディレクトリの設定には、ユーザーのログインシェルにユーザー初期設定ファイルを提供することも含まれます。ユーザー初期設定ファイルは、ユーザーがシステムにログインしたあとでユーザーのために作業環境を設定するシェルスクリプトです。基本的にシェルスクリプトでできる作業はどれもユーザー初期設定ファイルで実行できますが、その主な仕事は、ユーザーの検索パス、環境変数、ウィンドウ機能の環境などユーザーの作業環境を定義することです。各ログインシェルには、1 つまたは複数の、固有のユーザー初期設定ファイルがあり、それを表 1-9 に示します。
表 1-9 Bourne、C、Korn シェルのユーザー初期設定ファイル
シェル |
初期設定ファイル |
目的 |
---|---|---|
$HOME/.profile |
ログイン時のユーザー環境の定義
|
|
$HOME/.cshrc |
ログインシェルのあとで起動されるすべての C シェルに対するユーザー環境の定義 |
|
|
ログイン時のユーザー環境の定義
|
|
ログイン時のユーザー環境の定義 |
||
|
Korn シェルの ENV 環境変数によって指定されるファイルでのログイン時のユーザー環境の定義 |
Solaris 2.x システムソフトウェアは、表 1-10 に示すように、各システムの /etc/skel ディレクトリに、各シェル用のデフォルトのユーザー初期設定ファイルを提供します。
表 1-10 デフォルトのユーザー初期設定ファイル
シェル |
デフォルトファイル |
---|---|
| |
これらのファイルを変更して、すべてのユーザーに共通な作業環境を提供する標準のファイルセットを作成したり、あるいは異なるタイプのユーザーに作業環境を提供したりすることができます。異なるタイプのユーザーにユーザー初期設定ファイルを作成する手順については、「ユーザー初期設定ファイルをカスタマイズする方法」を参照してください。
ユーザー初期設定ファイルをカスタマイズするとき、ユーザー初期設定ファイルを管理者とユーザーの両方がカスタマイズできることが重要です。この重要な機能は、サイト初期設定ファイルと呼ばれる、グローバルに配布されるユーザー初期設定ファイルにより実現します。サイト初期設定ファイルを使用して、ユーザーの作業環境に新しい機能を絶えず導入でき、しかもユーザーはユーザー初期設定ファイルをカスタマイズすることもできます。
ユーザー初期設定ファイルでサイト初期設定ファイルを参照するとき、サイト初期設定ファイルに対して行なったすべての更新は、ユーザーがシステムにログインするときかユーザーが新しいシェルを起動するとき自動的に反映されます。サイト初期設定ファイルは、ユーザーを追加したときにはなかったサイト全体の変更をユーザーの作業環境に配布するよう設計されています。
ユーザー初期設定ファイルでできるカスタマイズは、サイト初期設定ファイルでも行えます。これらのファイルは通常はサーバー (あるいは、サーバーのグループ) にあり、ユーザー初期設定ファイルの最初の行に現れます。また、各サイト初期設定ファイルは、それを参照するユーザー初期設定ファイルと同じ型のシェルスクリプトでなければなりません。
C シェルのユーザー初期設定ファイルでサイト初期設定ファイルを参照するには、ユーザー初期設定ファイルの初めに次のような行を入れてください。
source /net/machine-name/export/site-files/site-init-file
Bourne または Korn シェルのユーザー初期設定ファイルでサイト初期設定ファイルを参照するには、ユーザー初期設定ファイルの初めに次のような行を入れてください。
. /net/machine-name/export/site-files/site-init-file
ユーザー初期設定ファイルでは、ローカルシステムへの固有の参照は追加しないでください。初期設定ファイルの設定は、ユーザーがどのシステムにログインしても有効になる必要があります。次に例を示します。
ユーザーのホームディレクトリをネットワーク上の任意の位置で利用できるようにするには、常に環境変数の値 $HOME を使用してホームディレクトリを参照してください。たとえば、/export/home/username/bin ではなく、$HOME/bin を使用してください。$HOME は、ユーザーが別のシステムにログインする場合でも有効で、その場合ホームディレクトリは自動マウントされます。
ローカルディスクのファイルにアクセスするには、/net/machine-name/directory-name などのグローバルパス名を使用してください。システムが AutoFS を実行していれば、/net/machine-name で参照されるディレクトリはすべてユーザーがログインする任意のシステムに自動的にマウントできます。
表 1-11 に、各シェルの基本的機能を示します。ユーザー初期設定ファイルを作成するのにどのシェルがどんな機能を提供するか参考にしてください。
表 1-11 Bourne、C、Korn シェルの基本機能
機能 |
Bourne |
C |
Korn |
---|---|---|---|
UNIX で標準シェルとして知られる |
○ |
* |
* |
Bourne シェルと互換性がある構文 |
- |
* |
○ |
ジョブ制御 |
○ |
○ |
○ |
履歴リスト |
* |
○ |
○ |
コマンド行編集 |
* |
○ |
○ |
別名 (エイリアス) |
* |
○ |
○ |
ログインディレクトリの 1 文字省略形 |
* |
○ |
○ |
ファイルの上書き保護 (noclobber) |
* |
○ |
○ |
CTRL-D 無視 (ignoreeof) |
* |
○ |
○ |
拡張 cd |
* |
○ |
○ |
.profile とは別の初期設定ファイル |
* |
○ |
○ |
ログアウトファイル |
○ |
○ |
シェルは、login プログラム、システム初期設定ファイル、ユーザー初期設定ファイルによって定義される変数を含む環境を管理します。また、一部の変数はデフォルトによって定義されます。シェルには次の 2 種類の変数があります。
環境変数 - シェルによって生成されるすべてのプロセスにエクスポートされる変数。環境変数の設定値は env コマンドで表示できます。PATH などを含む環境変数の一部が、シェルそのものの動作に影響を与えます。
シェル (ローカル) 変数 - 現在使用中のシェルだけに関係する変数。C シェルの場合は、シェル変数は環境変数と特別に対応しています。これらのシェル変数は user、term、home、path です。シェル変数は、対応する環境変数の値によって初期設定されます。
C シェルでは、小文字を使って set コマンドでシェル変数を設定し、大文字を使って setenv コマンドで環境変数を設定します。シェル変数を設定すると、対応する環境変数が設定され、その逆もあります。たとえば、path シェル変数を新しいパスで更新すると、シェルは PATH 環境変数も新しいパスで更新します。
Bourne、Korn 両シェルでは、一般的に、大文字を使って setenv コマンドでシェル変数と環境変数を設定します。また、export コマンドで環境変数の設定を終了しなければなりません。すべてのシェルで、シェル変数と環境変数は一般的に大文字の名前で参照します。
ユーザー初期設定ファイルで、ユーザーのシェル環境を、あらかじめ定義された変数の値を変更するか、変数を追加することによってカスタマイズできます。表 1-12 はユーザー初期設定ファイルで環境変数を設定する方法を示します。
表 1-12 ユーザー初期設定ファイルでの環境変数の設定方法
環境変数を設定したいシェル |
ユーザー初期設定ファイルに追加する行 |
---|---|
setenv MAIL /var/mail/ripley |
|
VARIABLE=value; export VARIABLE 例: MAIL=/var/mail/ripley;export MAIL |
表 1-13 に、ユーザー初期設定ファイルでカスタマイズできる環境変数とシェル変数を説明します。各シェルで使用される変数の詳細については、sh(1)、ksh(1)、csh(1) の各マニュアルページを参照してください。
表 1-13 シェル変数と環境変数の説明
ユーザーがフルパス名を使ってコマンドを入力すると、シェルはそのパス名を使ってコマンドを探します。ユーザーがコマンド名しか指定しないと、シェルは PATH 変数で指定されているディレクトリの順でコマンドを探します。ディレクトリのどれかで見つかれば、シェルはコマンドを実行します。
デフォルトのパスがシステムで設定されますが、大部分のユーザーはそれを変更して他のコマンドディレクトリを追加します。環境の設定や、正しいバージョンのコマンドまたはツールへのアクセスに関連して発生するユーザーの問題の多くは、パス定義の誤りが原因です。
次に、効率的な PATH 変数を設定するガイドラインをいくつか示します。
セキュリティが特に問題とならないときは、現在の作業ディレクトリ (.) をパスの最初に指定します。しかし、現在の作業ディレクトリをパスに入れると、セキュリティ上問題があり、特にスーパーユーザーにとって問題となります。
検索パスはできるだけ短くしておきます。シェルはパスで各ディレクトリを探します。コマンドが見つからないと、検索に時間がかかり、システム性能が低下します。
検索パスは左から右に読まれるため、通常使用するコマンドをパスの初めの方に指定するようにしてください。
パスでディレクトリを重複しないように確認してください。
可能であれば、大きなディレクトリの検索は避けてください。大きなディレクトリはパスの終わりに指定します。
NFS サーバーが応答しないときに「ハング」の可能性を少なくしたり、不要なネットワークトラフィックを削減するよう、NFS がマウントするディレクトリより前にローカルディレクトリを指定します。
次の例は、ユーザーのデフォルトパスがホームディレクトリと他の NFS マウントディレクトリを含むように設定する方法を示します (現在の作業ディレクトリはパスの初めに指定されます)。C シェルユーザー初期設定ファイルでは、次の行を追加してください。
set path=(. /usr/bin $HOME/bin /net/glrr/files1/bin)
Bourne または Korn シェルユーザー初期設定ファイルでは、次の行を追加してください。
PATH=.:/usr/bin:/$HOME/bin:/net/glrr/files1/bin export PATH
LANG および LC 環境変数は、時間帯と照合順序、および日付、時間、通貨、番号の書式など、ロケール固有の変換と表記をシェルに指定します。さらに、ユーザー初期設定ファイルで stty コマンドを使って、システムが複数バイト文字をサポートするかどうかを設定できます。
LANG は、ロケールのすべての変換と表記を設定します。特に必要な場合はこれとは別に、次の LC 変数、LC_COLLATE、LC_CTYPE、LC_MESSAGES、LC_NUMERIC、LC_MONETARY、LC_TIME によりその他の設定を行えます。
表 1-14 は、LANG と LC 環境変数の値を示します。
表 1-14 LANG と LC 変数の値
ロケール |
値 |
---|---|
de |
German |
fr |
French |
English および European |
|
it |
Italian |
japanese |
Japanese |
korean |
Korean |
sv |
Swedish |
tchinese |
Taiwanese |
次の例は、LANG 環境変数を使ってロケールを設定する方法を示しています。C シェルユーザー初期設定ファイルでは、次の行を追加してください。
setenv LANG DE
Bourne または Korn シェルユーザー初期設定ファイルでは、次の行を追加してください。
LANG=DE; export LANG
ファイルまたはディレクトリを作成したときに設定されるデフォルトのファイルアクセス権は、ユーザーマスクによって制御されます。ユーザーマスクは、初期設定ファイルで umask コマンドにより設定されます。現在のユーザーマスクの値は、umask と入力して Return キーを押すと表示できます。
ユーザーマスクは 3 桁の 8 進値で設定します。最初の桁でそのユーザーのアクセス権を設定し、第 2 桁でグループのアクセス権を設定し、第 3 桁で「その他 」(ワールドとも呼ばれます) のアクセス権を設定します。最初の桁がゼロの場合、この桁は表示されません。たとえば、umask を 022 に設定すると、22 が表示されます。
設定する umask の値は、与えたいアクセス権の値を 666 (ファイルの場合) または 777 (ディレクトリの場合) から引きます。引いた残りが umask に使用する値です。たとえば、ファイルのデフォルトモードを 644 (rw-r--r--) に変更したいとすれば、666 と 644 の差 022 が umask コマンドの引数として使用する値です。
また、表 1-15 から umask 値を決めることもできます。この表は、 umask の各 8 進値から作成される、ファイルとディレクトリのアクセス権を示します。
表 1-15 umask 値のアクセス権
umask 8 進値 |
ファイルアクセス権 |
ディレクトリアクセス権 |
---|---|---|
0 |
rw- |
rwx |
1 |
rw- |
rw- |
2 |
r-- |
r-x |
3 |
r-- |
r-- |
4 |
-w- |
-wx |
5 |
-w- |
-w- |
6 |
--x |
--x |
7 |
--- (なし) |
--- (なし) |
次の例は、デフォルトのファイルアクセス権を rw-rw-rw- に設定します。
umask 000
ここでは、ユーザー自身の初期設定ファイルをカスタマイズする場合にまず使用する、ユーザー初期設定ファイルとサイト初期設定ファイルの例を示します。例の中のシステム名やパス名は、実際のサイトに合わせて置き換えてください。
1PATH=$PATH:$HOME/bin:/usr/local/bin:/usr/ccs/bin:. 2MAIL=/var/mail/$LOGNAME 3NNTPSERVER=server1 4MANPATH=/usr/share/man:/usr/local/man 5PRINTER=printer1 6umask 022 7export PATH MAIL NNTPSERVER MANPATH PRINTER
1. ユーザーのシェルの検索パスを設定する。
2. ユーザーのメールファイルへのパスを設定する。
3. ユーザーの Usenet ニュースサーバー用の環境変数を設定する。
4. マニュアルページへのユーザーの検索パスを設定する。
5. ユーザーのデフォルトプリンタを設定する。
6. ユーザーのデフォルトのファイル作成アクセス権を設定する。
7. 指定された環境変数をエクスポートする。
1set path=($PATH $HOME/bin /usr/local/bin /usr/ccs/bin) 2setenv MAIL /var/mail/$LOGNAME 3setenv NNTPSERVER server1 4setenv PRINTER printer1 5alias h history 6umask 022 7source /net/server2/site-init-files/site.login
1. ユーザーのシェルの検索パスを設定する。
2. ユーザーのメールファイルへのパスを設定する。
3. ユーザー Unset ニュースサーバーを設定する。
4. ユーザーのデフォルトプリンタを設定する。
5. History コマンドの別名を作成する (h と入力するだけで history コマンドを実行できる)。
6. ユーザーのデフォルトのファイル作成アクセス権を設定する。
7. 「サイト初期設定ファイルの例」 に示すサイト初期設定ファイルを実行する。
次のサイト初期設定ファイルの例では、ユーザーは特定のバージョンのアプリケーションを選択できます。
表 1-16 サイト初期設定ファイルの例
このサイト初期設定ファイルはユーザーの .cshrc ファイル (C シェルユーザーのみ使用可能) で、次のように参照できます。
source /net/server2/site-init-files/site.login
この行では、サイト初期設定ファイルは site.login と指定され、server2 という名前のサーバー上にあります。また、この行では自動マウンタがユーザーのシステムで実行されていると仮定しています。