シェルの起動

Yash がプログラムとして起動されると、yash はいくつかの初期化処理を行った後、コマンドを読み取って実行する処理に移ります。これらの処理の内容は、主に起動時のコマンドライン引数によって決まります。

起動時のコマンドライン引数

Yash の起動時のコマンドライン引数は POSIX に準拠しています。引数に含まれるオプションによって、オペランドの解釈が変わります。引数の書式に関する一般的な説明についてはコマンドの引数の構文を参照してください。オプションはオペランドより前に指定する必要があります。

最初のオペランドが - の場合、そのオペランドは特別に無視されます。

シェルの初期化処理

シェルの初期化処理は以下のように行われます。

  1. Yash はまず、(コマンドライン引数の前に渡される) それ自身の起動時の名前を解析します。その名前が - で始まる場合は、シェルはログインシェルとして動作します。また名前が sh である場合 (/bin/sh のように sh で終わる場合を含む) は、シェルは POSIX 準拠モードになります。

  2. オペランドが一つもなく、かつ標準入力と標準エラーがどちらも端末ならば、シェルは自動的に対話モードになります。ただし -i/+i オプションが指定されている場合はそちらを優先します。

    対話モードのシェルでは自動的にジョブ制御が有効になります。ただし -m/+m オプションが指定されている場合はそちらを優先します。

  3. シェルは以下の初期化スクリプトを読み込んで解釈・実行します。(ただしシェルプロセスの実ユーザ ID と実効ユーザ ID が異なっているか、実グループ ID と実効グループ ID が異なっている場合を除く)

    1. シェルがログインシェルとして動作している場合は、ファイル ~/.yash_profile の内容を読み込んで実行します。(ただし --noprofile オプションが指定されているか POSIX 準拠モードの場合を除く)

    2. シェルが対話モードの場合は、--rcfile=ファイル名 オプションで指定したファイルを読み込んで実行します。(ただし --norcfile オプションが指定されている場合を除く)

      --rcfile オプションが指定されていない場合は、非 POSIX 準拠モードではファイル ~/.yashrc がデフォルトのファイルとして使われます。POSIX 準拠モードでは、ENV 環境変数の値がパラメータ展開され、その結果をファイル名と見なしてファイルを読み込みます。

    注: Yash は /etc/profile を自動的に読み込むことはありません。