9    System V 動作環境の使用

この章では,System V 環境,コマンド,サブルーチン,システム・コールについて説明しています。 この章で説明しているコマンドによって,次のことが可能になります。

System V 動作環境は,SVID (System V Interface Definition) に定義されている Base System および Kernel Extension のすべてのコンポーネントに関して,ソース・コード・インタフェースおよび実行時動作をサポートする代替バージョンのコマンド,サブルーチン,およびシステム・コールで構成されています。 この System V 環境の実装により,すべての SVID 2 の機能と SVID 3 の機能がサポートされます。 System V 環境には,すでに SVID の要件を満たしているシステム標準のコマンド,サブルーチン,およびシステム・コールの代替バージョンは含まれません。

System V 環境を設定すると,システム標準のコマンドおよび関数の代りに,対応する System V のコマンドおよび関数 (システム・コールおよびサブルーチン) が使用されるようになります。 System V の環境には次の 2 つの方法でアクセスすることができます。

System V のシステム・コールはシステム標準のシステム・コールに依存してないので,System V のシステム・コールを使用して構築されたアプリケーションを実行しても,性能上の障害は発生しません。

図 9-1 はオペレーティング・システム内の System V 機能の位置付けを示した概念図です。 この図から,System V のシステム・コールは,カーネル・レベルにあることがわかります。

図 9-1:  System V 機能

以降の各節で,System V 環境にアクセスするための設定方法と,機能について説明します。

9.1    環境の設定

ログイン時に自動的に System V の環境にアクセスするには,Bourne,Korn,または POSIX シェルを使用している場合は .profile ファイルに,C シェルを使用している場合は .login および .cshrc ファイルにそれぞれコマンド行を追加します。 このコマンド行は PATH 環境変数を変更し,/bin または /usr/bin 等のシステム標準のコマンドが格納されているディレクトリよりも先に,System V のコマンドが格納されているディレクトリが検索されるように設定します。 次のような System V 環境設定スクリプトが利用できます。

たとえば,Bourne,Korn,または POSIX シェルを使用し,SVID 2 の機能を指定する場合,.profile ファイルに次の行を追加します。

if [ -f /etc/svid2_profile ]
then
       . /etc/svid2_profile
fi
 

C シェルを使用し,SVID 2 の機能を指定する場合,.login および .cshrc ファイルに次の行を追加します。

if ( -e /etc/svid2_login ) then
       source /etc/svid2_login
endif
 

ピリオド (.) と source コマンドはシェル固有です。 シェル・コマンドについての詳細は,該当するシェルのリファレンス・ページを参照してください。

9.2    環境設定スクリプトによる PATH 環境変数の設定

SVID 2 の動作を指定するスクリプトまたは SVID 3 の動作を指定するスクリプトのいずれを選択しても,次のように System V 環境を設定します。

以後,System V コマンドが格納されているディレクトリ名は,/etc/svid2path または /etc/svid3path ファイルの内容を cat(1) コマンドで表示して確認することができます。

System V 環境設定スクリプトを使用して PATH 環境変数を変更すると,システム管理者が各ユーザの .profile または .login および .cshrc ファイルを変更しなくても,System V 環境のパスが変更できます。 システム管理者は /etc/svid2path および /etc/svid3path ファイルを変更するだけで,グローバル定義を行うことができます。

System V 環境設定スクリプトが PATH を設定する方法については,次に示す .profile を参照してください。 これは,SVID 2 用の System V 環境設定スクリプトを指定します。

stty erase DEL kill ^U intr ^C quit ^X echo
TERM=vt100
PATH=:$HOME/bin:/usr/lib:/bin
MAIL=/usr/mail/$LOGNAME
EDITOR=vi
export MAIL PATH TERM EDITOR
if [ -f /etc/svid2_profile ]
then
        . /etc/svid2_profile
fi

この例では,/etc/svid2path にある System V コマンドのパスが /usr/opt/s5 で,ログイン・ディレクトリが /usr/users/xxx であるとします。 前述の .profile ファイルを使用してログインした後,PATH を表示すると,次のように System V コマンドへのパスが .profile ファイルの 3 行目の PATH 設定の先頭に追加されて表示されます。

% echo $PATH [Return]
/usr/opt/s5/bin:/usr/opt/s5/sbin:/usr/users/xxx/bin:/usr/lib:/bin
 

以後,シェル・コマンドを発行すると System V のコマンドを格納しているディレクトリが最初に検索されます。 このパスにコマンドが見つからない場合は指定されたパスが順次検索されます。

9.3    シェル・スクリプトの互換性

シェルの PATH 環境変数を変更することによって,シェル・スクリプトの互換性が達成されます (9.1 節で説明)。 このため,System V のコマンドのパスがシステム標準のコマンドのパスより先に検索されます。 PATH 環境変数が System V 環境用に設定されていると,C シェルまたは Bourne,Korn,または POSIX シェルのいずれを使用している場合でも,シェル・スクリプトは System V との互換性を持ちます。

9.4    System V のコマンド概略

表 9-1 はシステム標準のコマンドとはオプションまたは機能が異なる System V のユーザ・コマンドの機能の概略です。 詳細については,各コマンドのリファレンス・ページを参照してください。

表 9-1:  ユーザ・コマンドのまとめ

コマンド System V 動作
chmod(1) シンボリック・モードで保護モードを変更する場合,許可を与えるユーザ群 (u,g,o) を省略すると umask を無視し,a (すべてのユーザ) を指定した場合と同じ動作をします。
df(1) -t オプションを指定すると,ディスク領域の合計が表示されます。 このとき,オプションでファイル・システム名またはデバイス名を指定できます。
ln(1) -f オプションを指定すると,指定されたリンクを作成する前に既存のデスティネーションのパス名が削除されます。
ls(1) -C オプションが指定されている場合に限りマルチ・カラムの出力を行います。 また -s オプションが指定されている場合,通常の 1024 バイト単位ではなく,512 バイト単位でファイルのサイズを出力します。
mailx(1) および Mail(1) System V の mailx コマンドの機能をインクルードします。
sum(1) 省略時は語単位のアルゴリズムを使用し,-r オプションが指定された場合にバイト単位のアルゴリズムを使用します。 System V の sum コマンドでは,省略時の checksum アルゴリズムがシステム標準の sum コマンドのものと反対になります。
tr(1) -c オプションを指定した場合,必ず -A オプションをインクルードします。 -A オプションは ASCII コードが 8 進数の 1 から 377 の文字だけを対象にします。