説明
shl は、シェル階層を使って単一のターミナルから
複数のシェルと対話処理を行う方法です。 階層とは、仮想デバイスにバインドされているシェルです。
仮想デバイスは、 stty および ioctl() を使って実際のターミナルのように操作することができます ( stty(1) および ioctl(2) を参照)。 階層ごとに独自のプロセスグループ
ID があります。 ユーザーは下記のコマンドを使ってこれらの階層を制御します。
現在の階層は、キーボードから入力を受け付けられる階層です。
キーボードから読み出そうとするその他の階層はブロックされます。 複数の階層からの出力はターミナルにマルチプレックスされます。
現在使用されていない階層の出力のブロックには、 stty オプション loblk を階層内で設定できます。
stty 文字 swtch ( NUL
の場合は ^Z に設定) は、階層から shl に制御を切り換えるのに使用されます。 shl には、階層と区別するための独自のプロンプト >>> があります。
定義
name は、スペース、タブ、または改行文字によって区切られる文字列です。
最初の 8 文字だけが意味があります。 create, name などのコマンドへの引き数として与えられると、 name の形式は n または (n) にはできません ( n は 10 進数)。
コマンド
以下のコマンドを shl プロンプトレベルから発行できます。
任意の重複しないプレフィックスが受け付けられます。
| create [-[name] | name [command]] |
| | | name という階層を作成して、それを現在の階層にします。
引き数を与えなければ、階層は形式 (n), の名前で作成されます。 n は内部テーブルにおける次の空きスロットの番号です。
この階層の将来の参照は、 小かっこを付けても付けなくても作成できます。 name の後にコマンドが続く場合、 そのコマンドはシェルではなく階層で実行されます。 - が最初の引き数ならば、「ログインシェル」が階層で作成されます。
シェルプロンプト変数 PS1 は階層とこの後にスペースが続いた名前に設定されます。 |
| name [oldname] newname |
| | | 階層 oldname を newname に名称変更します。 oldname を指定しなければ、現在の階層名が変更されます。 |
| ! [command] | | サブシェルを起動し、 command を実行します。 command を与えなければ、シェルは SHELL 環境変数に従って実行されます。 |
| block name [name ...] |
| | | name ごとに、現在の階層ではないときに 対応する階層の出力をブロックします。
これは、階層内で stty の loblk オプションを設定するのと同じです。 |
| delete name [name ...] |
| | | name ごとに、対応する階層を削除します。 階層のプロセスグループにおけるプロセスにはすべて SIGHUP シグナルが送信されます ( signal(5) を参照)。 |
| help (または ?) | | shl コマンドの構文をプリントします。 |
| layers [-l] [name ...] |
| | | name ごとに、階層名およびそのプロセスグループをリストします。 -l オプションは ps(1) と同じようなリストを作成します。
引き数を与えなければ、 情報はすべての既存の階層に対して示されます。 |
| resume [name] | | name によって参照される階層のステータスを現在の階層のステータスに変更します。
引き数を与えなければ、最後の既存の現在の階層が変更されます。 |
| toggle | | 直前の現在の階層のステータスを、現在の階層のステータスに変更します。 |
| unblock name [name ...] |
| | | name ごとに、現在の階層ではないときに 対応する階層の出力をブロックしません。
これは階層内で stty の -loblk オプションを設定するのと同じです。 |
| quit | | shl を終了します。 階層にはすべて SIGHUP シグナルが送信されます。 |
| name | | name によって参照される階層のステータスを現在の階層のステータスに変更します。
重複しない任意のプレフィックスが受け付けられます。 |
警告
コマンド
block および unblock shl の動作は、
SHELL 環境変数の設定が /usr/bin/csh ( csh(1) の場合) か /usr/bin/ksh ( ksh(1) の場合) であるとき、 または各コマンドがそのシェルから対話的に起動される前後に
シェルが ( termio(7) で定義)tty 状態をセーブしてリストアするときには保証されません。 /usr/bin/csh と /usr/bin/ksh,
の両方については、 stty の loblk または -loblk オプションを階層内から使用して
その階層の出力のブロックまたはアンブロックができます。
ptydaemon
shl が正しく動作するには、 システム上で ptydaemon プロセスが実行中でなければなりません。
システムがデスクトップ HP-UX 製品でインストールされている場合、 ptydaemon プロセスはデフォルトでは起動されません。
このデーモンを起動するには、 PTYDAEMON_START の /etc/rc.config.d/ptydaemon ファイルで
"0" を "1" に変更します。 この変更は、システムをリブートしない限り有効にはなりません。または
次のように入力して、手操作でデーモンを起動することもできます。
なお、システムに DesktopConfig.LITECONFIG ファイルセットがインストールされている場合、あるいは
システム管理者がすでに SAM ユーティリティを使用して、 SAM の Kernel Configuration 画面から Apply Lite HP-UX Configuration Action を選択してある場合は、 ptydaemon は使用できなくなります。
ファイル
| $SHELL | | 使用するシェルのパス名を内容とする変数 (デフォルトは /usr/bin/sh です) |
参照
sh(1), stty(1), ioctl(2), signal(5)
標準準拠
shl: SVID2, SVID3, XPG2