SMIT コマンドの生成と実行

システム管理インターフェース・ツール (SMIT) の各ダイアログは、 標準コマンドのバージョンを構築して実行します。

ダイアログによって実行するコマンドは、ダイアログ・ヘッダーを定義 する sm_cmd_hdr オブジェクト内の cmd_to_exec ディスクリプターに よって定義されます。

ダイアログ定義タスクの生成

sm_cmd_hdr.cmd_to_exec ディスクリプターで定義されたコマンドの作成において、SMIT は、sm_cmd_opt オブジェクトのダイアログ・セットに対して 2 パス・スキャンを使用して、接頭部とパラメーターの値を収集します。 集められたパラメーター値には、ユーザーが当初に表示された値から変更した値、および sm_cmd_opt.required ディスクリプターを "y" に設定して得られた値が組み入れられています。

最初のパスは、prefix ディスクリプターが空文字列である ("") か、あるいは - (負符号) で始まっている場合の sm_cmd_opt オブジェクトの値をすべて (順序正しく) 収集します。これらのパラメーターは、位置による区別なく処理され、このパラメーターに対する prefix ディスクリプターの内容とともに、コマンド名の直後に追加されます。

2 番目のパスは、prefix ディスクリプターが (2 個のダッシュ) で ある、残りの sm_cmd_opt オブジェクトの値をすべて (順序正しく) 収集します。 これらのパラメーターは、位置による区別があり、最初のパスで収集された フラグ付きオプションの後ろに追加されます。

注: SMIT は、prefix フィールドに入力したものの値を実行します。 prefix フィールド内の値が、* (アスタリスク) などの予約済みシェル文字である場合は、 文字の後ろに —' (ダッシュ、ダッシュ、単一引用符) を付ける必要があります。 こうしておけば、システムが文字を評価する際に、シェル文字と間違えることがありません。

ダイアログ内のコマンド・パラメーター値は、sm_cmd_opt オブジェクトの disc_field_name ディスクリプターが、前のセレクターあるいは前のディスカバリー・コマンドによって生成された値の名前と一致したときに、自動的に充てんされます。 これらのパラメーター値は、実際上はデフォルト値であり、 通常、コマンド・ラインに追加されることはありません。 sm_cmd_opt.required ディスクリプターを "y" または "+" に初期化すると、これらの値はダイアログ内で変更されていなくてもコマンド・ラインに追加されます。 sm_cmd_opt.required ディスクリプターの値が "?" である場合、関連する入力フィールドが空でない場合にのみ、該当する値が使用されます。 これらのパラメーター値は、正規の 2 パス・プロセスの一部として、 コマンド・ラインに組み込まれます。

先行および末尾のホワイト・スペース (スペースとタブ) は、sm_cmd_opt.entry_type ディスクリプターが "r" に設定されている場合を除いて、パラメーター値から除去されます。 その結果パラメーター値が空文字列になった場合、sm_cmd_opt.prefix ディスクリプターが オプション・フラグで開始されていないかぎり、それ以上は何のアクションも行われません。 prefix ディスクリプターが "—" (2 個のダッシュ) に 設定されていない場合は、値を単一引用符で囲む印がパラメーター値に追加されます。 各パラメーターは、関連する接頭部 (存在する場合) の直後に、 間にスペースを入れずに配置されます。 また、multi_select ディスクリプターが "m" に設定されている場合、 スペースで区切られた入力フィールド内のトークンは、別個のパラメーターとして取り扱われます。

ダイアログ定義タスクの実行

SMIT は、最初に子プロセスを作成することに よって、sm_cmd_hdr.cmd_to_exec ディスクリプターで指定されたコマンド文字列を実行します。 子プロセスの標準エラーと標準出力は、sm_cmd_hdr.exec_mode ディスクリプターの 内容によって指定されたとおりに操作されます。 次に SMIT は、子プロセス内の setenv("ENV=") サブルーチンを実行して、ユーザーの $HOME/.env ファイルで指定されているコマンドが、新規シェルの起動時に自動的に実行されないようにします。 最後に SMIT は、execl サブルーチンをコールし、 コマンド文字列を ksh -c パラメーター値として使用して ksh シェルを始動します。

SMIT は、ログ・ファイルのパス名とコマンド・ライン verbose、trace、および debug のフラグの設定を、 実行するコマンドのシェル環境で使用できるようにします。 これらの値は、次の環境変数を用いて提供されます。

  • _SMIT_LOG_FILE
  • _SMIT_SCRIPT_FILE
  • _SMIT_VERBOSE_FLAG
  • _SMIT_TRACE_FLAG
  • _SMIT_DEBUG_FLAG

対応するフラグが存在するか否かは、それぞれ 0 または 1 という値で示されます。

さらに、SMIT 環境変数は、どの SMIT 環境がアクティブであるかに ついての情報を提供します。 SMIT 環境変数の値は、次のとおりです。

SMIT 環境
a ASCII インターフェースにおける SMIT
d 分散 SMIT (DSMIT) インターフェースにおける SMIT
m ウィンドウ (Motif とも呼ばれる) インターフェースにおける SMIT

現在の設定を表示する簡単な方法は、SMIT の始動後にシェル機能を起動してから、コマンド文字列 env | grep SMIT を実行することです。

環境変数 SMIT_SHELL=n を設定すると、 ファンクション・キー F9=Shell を使用不可にすることができます。

ログ・ファイルへの書き込みはすべて付随的に行われます。自動的に行われないかぎり、 書き込みの直後にフラッシュする必要があります。

sm_cmd_hdr.exec_mode フィールドを "i" に設定すると、(子) タスク・プロセスの SMIT デフォルト出力リダイレクションを指定変更することができます。 タスク・プロセスは、単に標準エラーおよび標準出力のファイル・ディスクリプターを受け継ぐ だけであるため、この設定値によって出力管理の制御がタスクに渡されます。

sm_cmd_hdr.exec_mode フィールドを "e" に設定して、SMIT を停止し、ターゲット・タスクで置き換えることができます。