Solaris のシステム管理 (基本編)

ユーザーの作業環境のカスタマイズ

ユーザーのホームディレクトリの設定には、ユーザーのログインシェルにユーザー初期設定ファイルを提供することも含まれます。ユーザー初期設定ファイルは、ユーザーがシステムにログインしたあとにユーザーのために作業環境を設定するシェルスクリプトです。基本的にシェルスクリプトで行える処理はどれもユーザー初期設定ファイルで実行できます。主に、ユーザーの検索パス、環境変数、ウィンドウ機能の環境など、ユーザーの作業環境を定義します。次の表に示すように、各ログインシェルには、1 つまたは複数の、固有のユーザー初期設定ファイルがあります。

表 4–15 Bourne、C、Korn シェルのユーザー初期設定ファイル

シェル 

初期設定ファイル 

目的 

Bourne 

$HOME/.profile

ログイン時のユーザー環境を定義します 

C

$HOME/.cshrc

すべての C シェルに対するユーザー環境の定義で、ログインシェルのあとに起動されます 

 

$HOME/.login

ログイン時のユーザー環境を定義します 

 

Korn

$HOME/.profile

ログイン時のユーザー環境を定義します 

 

$HOME/$ENV

ログイン時のユーザー環境の定義で、Korn シェルの ENV 環境変数によって指定されます

表 4–16 デフォルトのユーザー初期設定ファイル

シェル 

デフォルトファイル 

C

/etc/skel/local.login

 

/etc/skel/local.cshrc

Bourne または Korn

/etc/skel/local.profile

これらのファイルを変更して、すべてのユーザーに共通の作業環境を提供する標準のファイルセットを作成できます。異なるタイプのユーザーごとに作業環境を提供する場合にも、これらのファイルを利用できます。ユーザーツールを使って、カスタマイズしたユーザー初期設定ファイルを作成することはできませんが、指定された「スケルトン」ディレクトリにあるユーザー初期設定ファイルでユーザーのホームディレクトリを生成することができます。この作業を行うためには、ユーザーテンプレートツールを使ってユーザーテンプレートを作成したあと、コピーするユーザー初期設定ファイルを保存するスケルトンディレクトリを指定します。

異なるタイプのユーザーにユーザー初期設定ファイルを作成する手順については、「ユーザー初期設定ファイルをカスタマイズする方法」を参照してください。

ユーザーツールで新しいユーザーアカウントを作成して、ホームディレクトリを作成するオプションを選択すると、選択したログインシェルに合わせて次のファイルが作成されます。

表 4–17 ユーザーの追加時にユーザーツールによって作成されるファイル

シェル 

作成されるファイル 

C  

/etc/skel/local.cshrc ファイルと /etc/skel/local.login ファイルがユーザーのホームディレクトリにコピーされ、それぞれ、.cshrc.login という名前に変更されます。

Bourne と Korn 

/etc/skel/local.profile ファイルがユーザーのホームディレクトリにコピーされ、.profile という名前に変更されます。

Bash シェルのカスタマイズ

Bash シェルをカスタマイズする場合は、ホームディレクトリにある .bashrc ファイルに必要な情報を追加します。Oracle Solaris のインストール時に作成される初期ユーザーは、PATHMANPATH、およびコマンドプロンプトを設定するための .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

ローカルシステムへの参照を避ける

ユーザー初期設定ファイルに、ローカルシステムへの個々の参照を追加しないでください。ユーザー初期設定ファイルの設定は、ユーザーがどのシステムにログインしても有効になる必要があるからです。

次に例を示します。

シェル機能

次の表に、各シェルの基本的な機能を示します。ユーザー初期設定ファイルを作成するときにどのシェルがどのような機能を提供するか参考にしてください。

表 4–18 Bourne、C、Korn シェルの基本機能

機能 

Bourne 

Korn 

UNIX で標準シェルとして知られる 

該当する 

該当しない 

該当しない 

Bourne シェルと互換性がある構文 

該当しない 

該当する 

ジョブ制御 

該当する 

該当する 

該当する 

履歴リスト 

該当しない 

該当する 

該当する 

コマンド行の編集 

該当しない 

該当する 

該当する 

別名 (エイリアス) 

該当しない 

該当する 

該当する 

ログインディレクトリの 1 文字省略形 

該当しない 

該当する 

該当する 

ファイルの上書き保護 (noclobber)

該当しない 

該当する 

該当する 

CTRL + D 無視 (ignoreeof)

該当しない 

該当する 

該当する 

拡張 cd コマンド

該当しない 

該当する 

該当する 

.profile とは別の初期設定ファイル

該当しない 

該当する 

該当する 

ログアウトファイル 

該当しない 

該当する 

なし

シェル環境

シェルは、login プログラム、システム初期設定ファイル、ユーザー初期設定ファイルによって定義される変数を含む環境を管理します。また、一部の変数はデフォルトで定義されます。

シェルには次の 2 種類の変数があります。

C シェルでは、小文字を使って set コマンドでシェル変数を設定し、大文字を使って setenv コマンドで環境変数を設定します。シェル変数を設定すると、対応する環境変数が設定されます。同様に、環境変数を設定すると、対応するシェル変数も変更されます。たとえば、path シェル変数を新しいパスで更新すると、シェルは PATH 環境変数も新しいパスで更新します。

Bourne、Korn の両シェルでは、任意の大文字の変数名を使って、シェル変数と環境変数の両方を設定できます。また、その後に実行されるコマンドに対して変数を有効にするために、export コマンドを使用します。

すべてのシェルで、シェル変数と環境変数は一般的に大文字の名前で参照します。

ユーザー初期設定ファイルでは、ユーザーのシェル環境を、あらかじめ定義された変数の値を変更するか、変数を追加することによってカスタマイズできます。次の表に、ユーザー初期設定ファイルで環境変数を設定する方法を示します。

表 4–19 ユーザー初期設定ファイルでの環境変数の設定方法

シェルタイプ 

ユーザー初期設定ファイルに追加する行 

C シェル

setenv VARIABLE value

例:

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 シェル変数と環境変数の説明

変数 

説明 

CDPATH (C シェルでは cdpath)

cd コマンドで使用する変数を設定します。cd コマンドの対象ディレクトリを相対パス名で指定すると、cd コマンドは対象ディレクトリをまず現在のディレクトリ (.) 内で検索します。対象ディレクトリが見つからない場合、CDPATH 変数内のパス名のリストが順に検索され、見つかると、ディレクトリの変更が行われます。CDPATH で対象ディレクトリが見つからなかった場合は、現在の作業ディレクトリは変更されません。たとえば、CDPATH 変数が /home/jean に設定されており、/home/jean の下に binrje の 2 つのディレクトリがあるとします。/home/jean/bin ディレクトリ内で cd rje と入力した場合、フルパスを指定していなくても、ディレクトリが /home/jean/rje に変更されます。

history

C シェルの履歴を設定します。 

HOME (C シェルでは home)

ユーザーのホームディレクトリへのパスを設定します。 

LANG

ロケールを設定します。 

LOGNAME

現在ログインしているユーザーの名前を設定します。LOGNAME のデフォルト値は、passwd ファイルに指定されているユーザー名にログインプログラムによって自動的に設定されます。この変数は参照用にのみ使用し、設定を変更してはいけません。

LPDEST

ユーザーのデフォルトプリンタを設定します。 

MAIL

ユーザーのメールボックスへのパスを設定します。 

MANPATH

アクセスできるマニュアルページの階層を設定します。 

PATH (C シェルでは path)

ユーザーがコマンドを入力したときに実行するプログラムについて、シェルが検索するディレクトリを順番に指定します。ディレクトリが検索パス上にない場合は、ユーザーはコマンドの絶対パス名を入力しなければなりません。  

デフォルトの 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 で見つかったバージョンが使用されます。

prompt

C シェルのシェルプロンプトを設定します。 

PS1

Bourne または Korn シェルのシェルプロンプトを設定します。 

SHELL (C シェルでは shell)

makevi、その他のツールが使うデフォルトシェルを設定します。

TERMINFO

代替の terminfo データベースが保存されているディレクトリに名前を付けます。/etc/profile または /etc/.login ファイルで TERMINFO 変数を使用します。詳細は、terminfo(4) のマニュアルページを参照してください。

TERMINFO 環境変数を設定すると、システムはまずユーザーが定義した TERMINFO パスを調べます。ユーザーが定義した TERMINFO ディレクトリ内に端末の定義が見つからなかった場合は、システムはデフォルトディレクトリ /usr/share/lib/terminfo で定義を探します。どちらにも見つからなかった場合、端末は dumb として定義されます。

TERM (C シェルでは term)

端末を設定します。この変数は /etc/profile または /etc/.login ファイルで再設定する必要があります。ユーザーがエディタを起動すると、システムはこの環境変数で定義される名前と同じ名前のファイルを探します。システムは、TERMINFO が参照するディレクトリ内を探して端末の特性を知ります。

TZ

時間帯を設定します。時間帯は、たとえば ls -l コマンドで日付を表示する場合に使われます。TZ をユーザーの環境に設定しないと、システムの設定が使用されます。設定する場合、グリニッジ標準時が使用されます。

PATH 変数

ユーザーが絶対パス名でコマンドを入力すると、シェルはそのパス名を使ってコマンドを探します。ユーザーがコマンド名しか指定しないと、シェルは PATH 変数で指定されているディレクトリの順でコマンドを探します。コマンドがいずれかのディレクトリで見つかれば、シェルはコマンドを実行します。

デフォルトのパスがシステムで設定されますが、大部分のユーザーはそれを変更してほかのコマンドディレクトリを追加します。環境の設定や、正しいバージョンのコマンドまたはツールへのアクセスに関連して発生するユーザーの問題の多くは、パス定義の誤りが原因です。

パスの設定のガイドライン

次に、効率的な PATH 変数を設定するためのガイドラインをいくつか示します。

ユーザーのデフォルトパスの設定

次の例は、ユーザーのデフォルトパスを設定する方法を示しています。

次の例は、ユーザーのデフォルトパスがホームディレクトリとほかの 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

ロケール変数

LANGLC の各環境変数は、ロケール固有の変換と表記をシェルに指定します。指定できる変換と表記には、時間帯や照合順序、および日付、時間、通貨、番号の書式などがあります。さらに、ユーザー初期設定ファイルで stty コマンドを使って、端末のセッションが複数バイト文字をサポートするかどうかを指定できます。

LANG 変数は、ロケールのすべての変換と表記を設定します。ロケールの各種の設定を個別に行うには、次の LC 変数を使用します。 LC_COLLATELC_CTYPELC_MESSAGESLC_NUMERICLC_MONETARY、および LC_TIME です。

次の表に、LANGLC 環境変数の値の一部を示します。

表 4–21 LANGLC 変数の値

値 

ロケール 

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)

サポートされるロケールの詳細については、『国際化対応言語環境の利用ガイド』を参照してください。


例 4–1 LANG 変数によるロケールの設定

次の例は、LANG 環境変数を使ってロケールを設定する方法を示しています。C シェルユーザー初期設定ファイルでは、次の行を追加してください。


setenv LANG de_DE.ISO8859-1

Bourne シェルまたは Korn シェルユーザー初期設定ファイルでは、次の行を追加してください。


LANG=de_DE.ISO8859-1; export LANG

デフォルトのファイルアクセス権 (umask)

ファイルまたはディレクトリを作成したときに設定されるデフォルトのファイルアクセス権は、「ユーザーマスク」によって制御されます。ユーザーマスクは、初期設定ファイルで umask コマンドによって設定されます。現在のユーザーマスクの値は、umask と入力して Return キーを押すと表示できます。

ユーザーマスクは、次の 8 進値で構成されます。

最初の桁がゼロの場合、その桁は表示されません。たとえば、ユーザーマスクを 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

ユーザー初期設定ファイルとサイト初期設定ファイルの例

ここでは、ユーザー自身の初期設定ファイルのカスタマイズを始める際に使用するユーザー初期設定ファイルとサイト初期設定ファイルの例を示します。例の中のシステム名やパス名は、実際のサイトに合わせて置き換えてください。


例 4–2 .profile ファイル


(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
  1. ユーザーのシェル検索パスを設定する

  2. ユーザーのメールファイルへの検索パスを設定する

  3. ユーザーの Usenet ニュースサーバーを設定する

  4. マニュアルページへのユーザーの検索パスを設定する

  5. ユーザーのデフォルトプリンタを設定する

  6. ユーザーのデフォルトのファイル作成アクセス権を設定する

  7. 指定された環境変数をエクスポートする



例 4–3 .cshrc ファイル


(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 
  1. ユーザーのシェル検索パスを設定する

  2. ユーザーのメールファイルへの検索パスを設定する

  3. ユーザーの Usenet ニュースサーバーを設定する

  4. ユーザーのデフォルトプリンタを設定する

  5. history コマンドの別名を作成する。これにより、h と入力するだけで history コマンドを実行できる

  6. ユーザーのデフォルトのファイル作成アクセス権を設定する

  7. 指定されたサイト初期設定ファイルを読み込む



例 4–4 サイト初期設定ファイル

次のサイト初期設定ファイルの例では、ユーザーは特定のバージョンのアプリケーションを選択できます。

# @(#)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 という名前のサーバー上にあります。また、自動マウンタがユーザーのシステムで実行されていることを前提としています。