ユーザーのホームディレクトリの設定には、ユーザーのログインシェルにユーザー初期設定ファイルを提供することも含まれます。ユーザー初期設定ファイルは、ユーザーがシステムにログインしたあとにユーザーのために作業環境を設定するシェルスクリプトです。基本的にシェルスクリプトで行える処理はどれもユーザー初期設定ファイルで実行できます。主に、ユーザーの検索パス、環境変数、ウィンドウ機能の環境など、ユーザーの作業環境を定義します。次の表に示すように、各ログインシェルには、1 つまたは複数の、固有のユーザー初期設定ファイルがあります。
表 4–15 Bourne、C、Korn シェルのユーザー初期設定ファイル
シェル |
初期設定ファイル |
目的 |
---|---|---|
Bourne |
$HOME/.profile |
ログイン時のユーザー環境を定義します |
$HOME/.cshrc |
すべての C シェルに対するユーザー環境の定義で、ログインシェルのあとに起動されます |
|
|
ログイン時のユーザー環境を定義します
|
|
ログイン時のユーザー環境を定義します |
||
|
$HOME/$ENV |
ログイン時のユーザー環境の定義で、Korn シェルの ENV 環境変数によって指定されます |
表 4–16 デフォルトのユーザー初期設定ファイル
シェル |
デフォルトファイル |
---|---|
| |
これらのファイルを変更して、すべてのユーザーに共通の作業環境を提供する標準のファイルセットを作成できます。異なるタイプのユーザーごとに作業環境を提供する場合にも、これらのファイルを利用できます。ユーザーツールを使って、カスタマイズしたユーザー初期設定ファイルを作成することはできませんが、指定された「スケルトン」ディレクトリにあるユーザー初期設定ファイルでユーザーのホームディレクトリを生成することができます。この作業を行うためには、ユーザーテンプレートツールを使ってユーザーテンプレートを作成したあと、コピーするユーザー初期設定ファイルを保存するスケルトンディレクトリを指定します。
異なるタイプのユーザーにユーザー初期設定ファイルを作成する手順については、「ユーザー初期設定ファイルをカスタマイズする方法」を参照してください。
ユーザーツールで新しいユーザーアカウントを作成して、ホームディレクトリを作成するオプションを選択すると、選択したログインシェルに合わせて次のファイルが作成されます。
表 4–17 ユーザーの追加時にユーザーツールによって作成されるファイル
シェル |
作成されるファイル |
---|---|
C |
/etc/skel/local.cshrc ファイルと /etc/skel/local.login ファイルがユーザーのホームディレクトリにコピーされ、それぞれ、.cshrc と .login という名前に変更されます。 |
Bourne と Korn |
/etc/skel/local.profile ファイルがユーザーのホームディレクトリにコピーされ、.profile という名前に変更されます。 |
Bash シェルをカスタマイズする場合は、ホームディレクトリにある .bashrc ファイルに必要な情報を追加します。Oracle Solaris のインストール時に作成される初期ユーザーは、PATH、MANPATH、およびコマンドプロンプトを設定するための .bashrc ファイルを持っています。詳細については、bash (1) のマニュアルページを参照してください。
ユーザー初期設定ファイルは、管理者とユーザーの両者によってカスタマイズできます。この重要な作業は、「サイト初期設定ファイル」と呼ばれる、大域的に配布されるユーザー初期設定ファイルによって実現します。サイト初期設定ファイルを使用して、ユーザーの作業環境に新しい機能を絶えず導入でき、しかもユーザーはユーザー初期設定ファイルをカスタマイズすることもできます。
ユーザー初期設定ファイルでサイト初期設定ファイルを参照するとき、サイト初期設定ファイルに対して行なったすべての更新は、ユーザーがシステムにログインするときかユーザーが新しいシェルを起動するとき自動的に反映されます。サイト初期設定ファイルは、ユーザーを追加したときにはなかったサイト全体の変更をユーザーの作業環境に配布するよう設計されています。
ユーザー初期設定ファイルでできるカスタマイズは、サイト初期設定ファイルでも行えます。これらのファイルは通常はサーバー、またはサーバーのグループにあり、ユーザー初期設定ファイルの最初の行に現れます。また、各サイト初期設定ファイルは、それを参照するユーザー初期設定ファイルと同じ型のシェルスクリプトでなければなりません。
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/system-name/directory-name などの大域パス名を使用してください。システムが AutoFS を実行していれば、/net/system-name で参照されるディレクトリはすべてユーザーがログインする任意のシステムに自動的にマウントできます。
次の表に、各シェルの基本的な機能を示します。ユーザー初期設定ファイルを作成するときにどのシェルがどのような機能を提供するか参考にしてください。
表 4–18 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 の両シェルでは、任意の大文字の変数名を使って、シェル変数と環境変数の両方を設定できます。また、その後に実行されるコマンドに対して変数を有効にするために、export コマンドを使用します。
すべてのシェルで、シェル変数と環境変数は一般的に大文字の名前で参照します。
ユーザー初期設定ファイルでは、ユーザーのシェル環境を、あらかじめ定義された変数の値を変更するか、変数を追加することによってカスタマイズできます。次の表に、ユーザー初期設定ファイルで環境変数を設定する方法を示します。
表 4–19 ユーザー初期設定ファイルでの環境変数の設定方法
シェルタイプ |
ユーザー初期設定ファイルに追加する行 |
---|---|
setenv MAIL /var/mail/ripley |
|
Bourne または Korn シェル |
VARIABLE=value ; export VARIABLE 例: MAIL=/var/mail/ripley;export MAIL |
次の表では、ユーザー初期設定ファイルでカスタマイズできる環境変数とシェル変数について説明します。各シェルで使用される変数の詳細は、 sh(1)、ksh(1)、csh(1) の各マニュアルページを参照してください。
表 4–20 シェル変数と環境変数の説明
変数 |
説明 |
---|---|
cd コマンドで使用する変数を設定します。cd コマンドの対象ディレクトリを相対パス名で指定すると、cd コマンドは対象ディレクトリをまず現在のディレクトリ (.) 内で検索します。対象ディレクトリが見つからない場合、CDPATH 変数内のパス名のリストが順に検索され、見つかると、ディレクトリの変更が行われます。CDPATH で対象ディレクトリが見つからなかった場合は、現在の作業ディレクトリは変更されません。たとえば、CDPATH 変数が /home/jean に設定されており、/home/jean の下に bin と rje の 2 つのディレクトリがあるとします。/home/jean/bin ディレクトリ内で cd rje と入力した場合、フルパスを指定していなくても、ディレクトリが /home/jean/rje に変更されます。 |
|
C シェルの履歴を設定します。 |
|
ユーザーのホームディレクトリへのパスを設定します。 |
|
ロケールを設定します。 |
|
現在ログインしているユーザーの名前を設定します。LOGNAME のデフォルト値は、passwd ファイルに指定されているユーザー名にログインプログラムによって自動的に設定されます。この変数は参照用にのみ使用し、設定を変更してはいけません。 |
|
ユーザーのデフォルトプリンタを設定します。 |
|
ユーザーのメールボックスへのパスを設定します。 |
|
アクセスできるマニュアルページの階層を設定します。 |
|
ユーザーがコマンドを入力したときに実行するプログラムについて、シェルが検索するディレクトリを順番に指定します。ディレクトリが検索パス上にない場合は、ユーザーはコマンドの絶対パス名を入力しなければなりません。 デフォルトの PATH は、ログインプロセスで .profile (Bourne または Korn シェル) あるいは .cshrc (C シェル) の指定どおりに自動的に定義され、設定されます。 検索パスの順序が重要です。同じコマンドが異なる場所にそれぞれ存在するときは、最初に見つかったコマンドが使用されます。たとえば、PATH が Bourne および Korn シェル構文で PATH=/bin:/usr/bin:/usr/sbin:$HOME/bin のように定義されていて、sample というファイルが /usr/bin と /home/jean/bin の両方にあるものとします。ユーザーが sample コマンドを、その絶対パスを指定しないで入力した場合は、/usr/bin で見つかったバージョンが使用されます。 |
|
C シェルのシェルプロンプトを設定します。 |
|
Bourne または Korn シェルのシェルプロンプトを設定します。 |
|
make、vi、その他のツールが使うデフォルトシェルを設定します。 |
|
代替の terminfo データベースが保存されているディレクトリに名前を付けます。/etc/profile または /etc/.login ファイルで TERMINFO 変数を使用します。詳細は、terminfo(4) のマニュアルページを参照してください。 TERMINFO 環境変数を設定すると、システムはまずユーザーが定義した TERMINFO パスを調べます。ユーザーが定義した TERMINFO ディレクトリ内に端末の定義が見つからなかった場合は、システムはデフォルトディレクトリ /usr/share/lib/terminfo で定義を探します。どちらにも見つからなかった場合、端末は dumb として定義されます。 |
|
端末を設定します。この変数は /etc/profile または /etc/.login ファイルで再設定する必要があります。ユーザーがエディタを起動すると、システムはこの環境変数で定義される名前と同じ名前のファイルを探します。システムは、TERMINFO が参照するディレクトリ内を探して端末の特性を知ります。 |
|
時間帯を設定します。時間帯は、たとえば ls -l コマンドで日付を表示する場合に使われます。TZ をユーザーの環境に設定しないと、システムの設定が使用されます。設定する場合、グリニッジ標準時が使用されます。 |
ユーザーが絶対パス名でコマンドを入力すると、シェルはそのパス名を使ってコマンドを探します。ユーザーがコマンド名しか指定しないと、シェルは 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 です。
次の表に、LANG と LC 環境変数の値の一部を示します。
表 4–21 LANG と LC 変数の値
値 |
ロケール |
---|---|
de_DE.ISO8859-1 |
ドイツ語 |
en_US.UTF-8 |
米国英語 (UTF-8) |
es_ES.ISO8859-1 |
スペイン語 |
fr_FR.ISO8859-1 |
フランス語 |
it_IT.ISO8859-1 |
イタリア語 |
ja_JP.eucJP |
日本語 (EUC) |
ko_KR.EUC |
韓国語 (EUC) |
sv_SE.ISO8859-1 |
スウェーデン語 |
zh_CN.EUC |
簡体字中国語 (EUC) |
zh_TW.EUC |
繁体字中国語 (EUC) |
サポートされるロケールの詳細については、『国際化対応言語環境の利用ガイド』を参照してください。
次の例は、LANG 環境変数を使ってロケールを設定する方法を示しています。C シェルユーザー初期設定ファイルでは、次の行を追加してください。
setenv LANG de_DE.ISO8859-1 |
Bourne シェルまたは Korn シェルユーザー初期設定ファイルでは、次の行を追加してください。
LANG=de_DE.ISO8859-1; export LANG |
ファイルまたはディレクトリを作成したときに設定されるデフォルトのファイルアクセス権は、「ユーザーマスク」によって制御されます。ユーザーマスクは、初期設定ファイルで umask コマンドによって設定されます。現在のユーザーマスクの値は、umask と入力して Return キーを押すと表示できます。
ユーザーマスクは、次の 8 進値で構成されます。
最初の桁でそのユーザーのアクセス権を設定する
2 桁目でグループのアクセス権を設定する
3 桁目でその他 (「ワールド」とも呼ばれる) のアクセス権を設定する
最初の桁がゼロの場合、その桁は表示されません。たとえば、ユーザーマスクを 022 に設定すると、22 が表示されます。
設定する umask の値は、与えたいアクセス権の値を 666 (ファイルの場合) または 777 (ディレクトリの場合) から引きます。引いた残りが umask に使用する値です。たとえば、ファイルのデフォルトモードを 644 (rw-r--r--) に変更するとします。このとき 666 と 644 の差 022 が umask コマンドの引数として使用する値です。
また、次の表から umask 値を決めることもできます。この表は、umask の各 8 進値から作成される、ファイルとディレクトリのアクセス権を示しています。
表 4–22 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 |
ここでは、ユーザー自身の初期設定ファイルのカスタマイズを始める際に使用するユーザー初期設定ファイルとサイト初期設定ファイルの例を示します。例の中のシステム名やパス名は、実際のサイトに合わせて置き換えてください。
(Line 1) PATH=$PATH:$HOME/bin:/usr/local/bin:/usr/ccs/bin:. (Line 2) MAIL=/var/mail/$LOGNAME (Line 3) NNTPSERVER=server1 (Line 4) MANPATH=/usr/share/man:/usr/local/man (Line 5) PRINTER=printer1 (Line 6) umask 022 (Line 7) export PATH MAIL NNTPSERVER MANPATH PRINTER |
ユーザーのシェル検索パスを設定する
ユーザーのメールファイルへの検索パスを設定する
ユーザーの Usenet ニュースサーバーを設定する
マニュアルページへのユーザーの検索パスを設定する
ユーザーのデフォルトプリンタを設定する
ユーザーのデフォルトのファイル作成アクセス権を設定する
指定された環境変数をエクスポートする
(Line 1) set path=($PATH $HOME/bin /usr/local/bin /usr/ccs/bin) (Line 2) setenv MAIL /var/mail/$LOGNAME (Line 3) setenv NNTPSERVER server1 (Line 4) setenv PRINTER printer1 (Line 5) alias h history (Line 6) umask 022 (Line 7) source /net/server2/site-init-files/site.login |
ユーザーのシェル検索パスを設定する
ユーザーのメールファイルへの検索パスを設定する
ユーザーの Usenet ニュースサーバーを設定する
ユーザーのデフォルトプリンタを設定する
history コマンドの別名を作成する。これにより、h と入力するだけで history コマンドを実行できる
ユーザーのデフォルトのファイル作成アクセス権を設定する
指定されたサイト初期設定ファイルを読み込む
次のサイト初期設定ファイルの例では、ユーザーは特定のバージョンのアプリケーションを選択できます。
# @(#)site.login main: echo "Application Environment Selection" echo "" echo "1. Application, Version 1" echo "2. Application, Version 2" echo "" echo -n "Type 1 or 2 and press Return to set your application environment: " set choice = $< if ( $choice !~ [1-2] ) then goto main endif switch ($choice) case "1": setenv APPHOME /opt/app-v.1 breaksw case "2": setenv APPHOME /opt/app-v.2 endsw |
次のようにして、このサイト初期設定ファイルをユーザーの .cshrc ファイル (C シェルユーザーのみ使用可能) で参照させることができます。
source /net/server2/site-init-files/site.login |
この行では、サイト初期設定ファイルは site.login という名前で、server2 という名前のサーバー上にあります。また、自動マウンタがユーザーのシステムで実行されていることを前提としています。