# Typeset 組込みコマンド

Typeset 組込みコマンドは​変数または​関数を表示・設定します。

## 構文

- `typeset [-gprxX] [変数[=値]…]`

- `typeset -f[pr] [関数…]`

## 説明

`-f` (`--functions`) オプションを付けずに実行すると、typeset コマンドは​変数を出力または設定します。`-f` (`--functions`) オプションを付けて実行すると、typeset コマンドは​関数を出力または設定します。

`-p` (`--print`) オプションを付けて実行すると、typeset コマンドはオペランドで指定した変数または関数を標準出力に出力します。`-p` (`--print`) オプションを付けずに実行すると、typeset コマンドはオペランドで指定した変数または関数を設定します。オペランドを一つも与えずに実行すると、`-p` (`--print`) オプションの有無にかかわらず typeset コマンドは全ての変数または関数を出力します (このとき `-g` (`--global`) オプションがあれば本当にすべての変数を、そうでないときはローカル変数だけを出力します)。

## オプション

`-f`
`--functions`

  変数ではなく関数を表示または設定します。

`-g`
`--global`

  このオプションを指定すると、新しく変数を作成する場合その変数をグローバル変数とします。すなわち変数は関数の実行が終わっても残ります。このオプションを指定しない場合、設定する変数は​ローカル変数になります。

  オペランドがない場合は、このオプションを指定していると全ての変数を出力します。このオプションを指定していないとローカル変数だけ出力します。

`-p`
`--print`

  変数または関数の定義を (コマンドとして解釈可能な形式で) 出力します。

`-r`
`--readonly`

  設定する変数・関数を読み取り専用にします。読み取り専用の変数・関数は、値を変更したり削除したりできなくなります。

  変数・関数を出力する際は、読み取り専用の変数・関数だけ出力します。

`-x`
`--export`

  設定する変数を​エクスポート対象にします。

  変数を出力する際は、エクスポート対象の変数だけ出力します。

`-X`
`--unexport`

  設定する変数をエクスポート対象から外します。

## オペランド

変数

  出力または設定する変数の名前です。

  変数が既に存在する場合、変数の値は変わりません。存在しない変数を指定した場合、変数は存在するがその値は存在しない状態になります (このような変数は​パラメータ展開では存在しない変数として扱います)。

変数=値

  設定する変数の名前とその値です。

  指定した値が変数の値として設定されます。この形式のオペランドでは、`-p` (`--print`) オプションを指定したときでもこの変数は出力ではなく設定されます。

関数

  出力または設定する関数の名前です。存在しない関数を指定することはできません。

## 終了ステータス

エラーがない限り typeset コマンドの終了ステータスは 0 です。

## 補足

既にローカル変数が存在する場合、それを無視してグローバル変数を新しく作ることはできません (`-g` (`--global`) オプションを指定していても既存のローカル変数が再設定されます)。

Typeset コマンドは​任意組込みコマンドです。 POSIX では typeset コマンドの動作は規定されていません。 このコマンドは POSIX 準拠モードでは使えません。

Export コマンドは typeset コマンドに `-gx` オプションを付けたものと同じです。​Readonly コマンドは typeset コマンドに `-gr` オプションを付けたものと同じです。​Local コマンドは typeset と同じですが `-f` (`--functions`) および `-g` (`--global`) オプションは使えません。