VOSでPOSIXシェル(「bash」)を使用したことがあるなら、入力や出力のリダイレクトなど、bashが提供する様々なPOSIXコマンドや便利な機能を利用できることをご存知でしょう。しかし、特長 利用できることをご存知でしたか?
たとえば、VOSの「list」コマンドとPOSIXの「more」コマンドを組み合わせたい場合は、bashに次のコマンドラインを入力します:
リスト | 続き
リストコマンドの出力をファイルに書き込むには、次のように指定します:
リスト >リスト.txt
これは、VOSとPOSIXの両方が、ターミナルやバッチファイルへの出力を書き込むために同じ基盤となるVOSポートを使用するためです。VOSの「default_output」ポートはPOSIXの「stdout」ファイルに相当します。また、VOSの「default_input」ポートはPOSIXの「stdin」ファイルと同じです。 最後に、VOSがエラーメッセージを書き込む「terminal_output」ポートは、POSIXの「stderr」ファイルと同じです。
VOSコマンドでbash入力リダイレクトを使用する(作為的な)例です。「line_edit.txt」という名前のファイルを作成し、以下の2行を記述します:
print * quit
次に、これらのline_editリクエストを略語ファイルに対して次のように実行できます:
line_edit abbreviations <line_edit.txt
bash はすべてのコマンドを新しい子プロセスで実行することに注意してください。子プロセスは親プロセスからすべての I/O アタッチメントと状態を継承するため、ほとんどのコマンドでは問題になりません。ただし、プロセス環境を変更する VOS コマンドは期待した動作をしません。 例えば、bash内部でset_library_pathsコマンドを実行すると、子プロセスのライブラリパスが変更されます。そしてこのプロセスはコマンド終了と同時に破棄されます。bashが検索するパスを変更したい場合は、POSIX方式(PATH環境変数の変更)を用いて変更する必要があります。
これらのテクニックが役に立つことを願っています。
