総合手引 | セクション 1 | English | オプション |
ENV=$HOME/.shinit; export ENV
コマンドライン引数で指定されたオプション以外の最初のものを、シェルは コマンドを読み込むべきファイル (シェルスクリプト) の名前であると解釈し、 それ以後の引数はシェルの位置パラメータ ($1, $2, ...) に設定します。 それ以外の場合、シェルはコマンドを標準入力から読み込みます。
古いバージョンの sh とは異なり、環境変数 ENV で指定したスクリプトが実行されるのは、対話的シェルの呼び出し時のみです。 これにより、いい加減に書かれた ENV スクリプトに起因する、簡単に食いものにされることが多い有名な セキュリティホールがふさがれたことになります。
| |
値が代入されたときに変数をエクスポートするよう、変数にフラグを付けます。 | |
| |
バックグラウンドジョブ実行の完了を、コマンドが実行中でも即座に報告しま す (未実装です)。 | |
| |
すでに存在するファイルを ">" リダイレクトで上書きしません。 | |
| |
組み込みの
emacs(1)
風のコマンド行編集機能を有効にします (それ以前に
| |
| |
非対話モードで、テスト状態にないコマンドの実行に失敗した場合、 直ちにシェルを終了します。 コマンドは、if, elif, while, until 構文を 制御するのに用いられている場合に、テスト状態であるとみなされます。 また、 "&&" や "||" の左辺値として用いられているコマンドも、テスト状態とみなされます。 | |
| |
パス名展開を行いません。 | |
| |
対話的シェルの場合、入力の EOF を無視します。 | |
| |
シェルが対話的に動作するように強制します。 | |
| |
ジョブ制御を可能にします (対話的シェルの場合は自動的に設定されます)。 | |
| |
非対話的シェルの場合、コマンドを読み込みますが、そのコマンドの実行は しません。シェルスクリプトの文法を検査する場合に便利です。 | |
| |
cd
と
pwd
コマンドにおけるデフォルトを
| |
| |
特権モードを有効にします。 起動時に実効ユーザ ID あるいは実効グループ ID が、実ユーザ ID や実グルー プ ID と一致していなければ、このモードが有効になります。このモードを無 効化すると、実効ユーザ ID および実効グループ ID は、実ユーザ ID および 実グループ ID に設定されます。 対話的シェルでこのモードが有効になっていると、 /etc/profile の後で ~/.profile に代わり、 /etc/suid_profile を読み込みます。一方、環境変数 ENV の内容は無視されます。 | |
| |
コマンドを標準入力から読み込みます (引数でファイル名が指定されていない 場合には、このオプションが自動的に設定されます)。 シェルが実行されてから本オプションを ( set などによって) 設定しても効果はありません。 | |
| |
子を待つとき、即座にトラップを実行します。
本オプションが設定されていないと、
IEEE Std 1003.2 ("POSIX.2")
で指定されているように、子が終了した後にトラップが実行されます。
この非標準オプションは、
シグナルをブロックする子の周囲に保護シェルを置くために有用です。
周囲のシェルは子を殺したり、
次のように、制御を tty に戻して子だけを残したりできます:
sh -T -c "trap 'exit 1' 2 ; some-blocking-program"
| |
| |
値が設定されていない変数を展開しようとした場合、 標準エラー出力にエラーメッセージを出力し、 さらに非対話的シェルならば、ただちにシェルを終了します。 | |
| |
組み込みの
vi(1)
風の行編集機能を有効にします (それ以前に
| |
| |
入力を読み込むごとに標準エラー出力に書き出します。デバッグのときに便利です。 | |
| |
各コマンドを実行する前に、そのコマンドを標準エラー出力に (各コマンドの 前に "+ " を付加して) 書き出します。デバッグのときに便利です。 | |
set -E set -o emacs
制御演算子: |
| |||||||||
リダイレクト演算子: | ||||||||||
| ||||||||||
シングルクォート文字 | ||||||
シングルクォートのペアで囲まれた文字は、すべてその文字そのまま (リテラル) として扱われます (ただしシングルクォートは別です。シングルクォート で囲った文字列の中にシングルクォートを含めることはできません)。 | ||||||
ダブルクォート文字 | ||||||
ダブルクォートのペアで囲まれた文字は、ドル記号文字
($)
、バッククォート文字
(`)
、バックスラッシュ文字
(\)
を除き、すべてリテラルとして扱われます。
ダブルクォート文字による引用の中にあるバックスラッシュ文字は、歴史
的経緯によりすこし変わった扱いを受けます。
次の文字の前にある場合はクォートになりますが、
それ以外ではリテラルのままとなります:
| ||||||
バックスラッシュ | ||||||
バックスラッシュは、その後ろの 1 文字を、リテラルとして扱うように指示 します。ただし改行文字 (\n) は別です。改行文字の直前のバックスラッシュは、行 の継続であるとみなされます。 | ||||||
amp;! | { | } | case | do |
done | elif | else | esac | fi |
for | if | then | until | while |
lf foobar
は、以下のように置換されます。
ls -F foobar
エイリアスは、初心者に対し、引数付きの関数を生成する面倒を求めることなく、 短いコマンドを作り出す便利な方法を提供するものです。 しかし、構文的にあいまいなコードを作り出すことにもつながりかねません。 そのような使い方はお勧めできません。
[n] redir-op file
ここで、 ‘redir-op’ は前述したリダイレクト演算子のいずれかです。 これらの演算子をどのように利用するかの例をいくつか以下に挙げます。
[n]> file | 標準出力 (またはファイル記述子 n) を file にリダイレクトします |
[n]>| file |
上と同様。ただし
|
[n]>> file | |
標準出力 (またはファイル記述子 n) を file に追加します。 | |
[n]< file | 標準入力 (またはファイル記述子 n) を file からリダイレクトします。 |
[n]<> file | |
標準入力 (またはファイル記述子 n) を file から/へ、リダイレクトします。 | |
[n1]<&n2 | |
ファイル記述子 n2 を標準入力 (またはファイル記述子 n1) に複製します。 | |
[n]<&- | 標準入力 (またはファイル記述子 n) をクローズします。 |
[n1]>&n2 | |
標準出力 (またはファイル記述子 n1) をファイル記述子 n2 に複製します。 (訳注: 通常は「ファイル記述子 n2 を標準出力 (またはファイル記述子 n1) に 複製」と表現します。 結果は、標準出力 (または n1 への出力) の n2 へのリダイレクトです。) | |
[n]>&- | 標準出力 (または n) をクローズします。 |
以下のリダイレクトは、しばしば "ヒア・ドキュメント (here-document)" と 呼ばれます。
[n]<< delimiter here-doc-text ... delimiter
シェルは、delimiter までの行を保存し、コマンドへの標準入力またはファイ ル記述子 n にリダイレクトします。最初の行の delimiter が引用 (クォート) されていた場合、here-doc-text の内容をリテラルとして扱います。 そうでない場合、パラメータ展開、コマンド置換、数値演算 ( 単語展開 の節で 説明します) を適用します。演算子が ( "<<" でなく) "<<-" の場合は、 here-doc-text の各行の行頭のタブを取り除きます。
シェル関数を実行するとき、$0 を除くすべての位置パラメータ ($1, $2,..) をシェル関数への引数として設定します。$0 は変更されません。シェル関数 の環境として指定された変数 (関数名の直前に "name=value" を置いて指定 されたもの) は、その関数に局所的な変数となり、指定された初期値が設定さ れます。そして、シェルは関数定義で与えられたコマンドを実行します。コマ ンドの実行が完了すると、位置パラメータを元の値に戻します。これは全て現 在のシェルの中で処理されます。
シェルの組み込みコマンドは、新たなプロセスを作成せずにシェル内部で実行されます。
コマンドが関数でも組み込みコマンドでもない場合は、通常のプログラムとみなし (次節で説明するとおり) ファイルシステムの中でそのコマンドを検索します。 通常のプログラムを実行する場合、シェルは引数と 環境をプログラムに渡して、そのプログラムを実行します。 プログラムが通常の実行ファイル形式ではない場合 (つまり、 ASCII 表現で "#!" となる "マジックナンバ" でファイルが始まっておらず、 execve(2) が ENOEXEC を返す場合)、 サブシェルの中でそのプログラムを解釈実行します。この場合、あたかも新たに シェルが起動されたかのような効果を得るために、子シェルは自分自身を 再初期化します。ただし、子プロセスは、親シェル中のハッシュされたコマンド 位置情報を憶えており、これは再初期化されません。
本ドキュメントの古いバージョンや古いソースコードでは、ときおり、 マジックナンバのないシェルスクリプトのことを "シェル手続き" と呼んでいて、 まぎらわしい場合がありますので注意して下さい。
コマンドがシグナルにより終了 (terminate) させられた場合、 終了ステータスは 128 にシグナル番号を加えたものになります。 シグナル番号はヘッダファイル <sys/signal.h> に定義されています。
単純コマンド | |
パイプライン | |
リストまたは合成リスト (compound-list) | |
合成コマンド (compound command) | |
関数定義 | |
特に指定のない場合、コマンドの終了ステータスは最後に実行された 単純コマンドの終了ステータスとなります。
パイプラインの形式は次のとおりです。
[!] command1[ | command2 ...]
command1 の標準出力は command2 の標準入力に接続されます。コマンドの標 準入出力がパイプラインによって割り当てられるのは、各コマンドに属する リダイレクト演算子で指定されたリダイレクトを処理する前のことだと考えて 下さい。
パイプラインがバックグラウンド (後述) でなければ、シェルはすべての コマンドが終了するのを待ちます。
パイプラインの直前に予約語 !amp; が置かれなかった場合、終了ステータスは パイプラインの最後のコマンドの終了ステータスとなります。 `!' が前置された場合、終了ステータスはパイプラインの最後のコマンドの 終了ステータスの論理否定を取った値となります。 すなわち、最後のコマンドが 0 を返した場合、パイプラインの 終了ステータスは 1 に、最後のコマンドが 0 より大きな値を返した場合、 終了ステータスは 0 になります。
パイプラインによる標準入出力の接続はリダイレクトに先立って行われるため、 パイプラインの接続をリダイレクトによって修正することができます。たとえば、
$ command1 2>&1 | command2
‘command1’ の標準出力と標準エラー出力の両方を ‘command2’ の標準入力に 接続します。
"amp;;" または改行文字を終端として用いることにより、直前の AND-OR リスト ( 短絡リスト演算子 で後述) を順次実行します。 "&" は、直前の AND-OR リストを非同期に実行します。
注: 他のいくつかのシェルと異なり、 sh ではパイプラインの各プロセスは起動した sh の子プロセスとなります。シェルの組み込みコマンドである ときは別です。その場合は現在のシェルで実行されますが、 環境に対する操作は影響を与えません。
コマンドをバックグラウンドで実行させるための形式は以下のとおりです。
command1 & [command2 & ...]
シェルが対話的でない場合、非同期コマンドの標準入力には /dev/null が 接続されます。
if list
then list
[ elif list
then list ] ...
[ else list]
fi
while コマンドの文法は以下のとおりです。
while list
do list
done
最初のリストの終了ステータスが 0 であるかぎり、2 つのリストを繰り返し 実行します。 until コマンドも同様に実行しますが、 単語 while の代わりに単語 until を使うことと、 最初のリストの終了ステータスが 0 になるまで、 2 つのリストを繰り返し実行することが異なります。
for コマンドの文法は以下のとおりです。
for variable in word ...
do list
done
各 word は展開され、変数 variable に word を順に設定しながらリストを 繰り返し実行します。 do と done は "{" と "}" で置き換えることができます。
break と continue コマンドの文法は以下のとおりです。
break [num]
continue [num]
break は内側から num 個の for ループまたは while ループを終了します。 continue は内側から num 個のループの次の繰り返しに制御を移します。 これらのコマンドは組み込みコマンドとして実装されています。
case コマンドの文法は以下のとおりです。
case word in
pattern) list ;;
...
esac
pattern は、1 つあるいは複数のパターン (後述の シェルパターン を参照のこと) を "amp;|" で接続したものです。
(list)
または、
{ list; }
最初の形式では、コマンドはサブシェル上で実行されます。 このため、組み込みコマンドは現在のシェルには影響を与えないことに注意してください。 2 つめの形式では新たなシェルを fork しないので、やや効率が良くなります。 このようにして複数コマンドをグループ化することで、 あたかも単一プログラムであるかのように、それらの出力をまとめて リダイレクトすることができます。
{ echo -n "hello"; echo " world"; } > greeting
name ( ) command
関数定義は実行可能文の一種です。実行されると、名前 name の関数 が定義され、終了ステータスとして 0 を返します。command は 通常、 "{" と "}" で囲まれたリストです。
local コマンドを用いて関数に局所的な変数を宣言することができます。 これは関数定義中の最初の文で行わなければなりません。構文は次のとおりです。 local [variable ...] [-]
local コマンドは、組み込みコマンドとして実装されています。
変数を局所変数にする場合、関数を呼び出した環境に同じ名前の変数があれば、 新しい局所変数は値と export、readonly フラグを引き継ぎます。もし同じ名前の 変数がなければ、局所変数は初期値を持ちません。シェルは動的スコープ を用います。すなわち、関数 f に局所的な変数 x を作成し、関数 f から関数 g を呼び出した場合、関数 g 内部での変数 x に対する操作は大域変数 x ではなく、関数 f で宣言された変数 x への操作となります。
特殊パラメータのうち局所宣言できるのは "-" だけです。 "-" を 局所宣言すると、関数内で set コマンドを用いてシェルオプションを 変更しても、関数が終了するとそれらのオプションは元の値に戻ります。
return コマンドの文法は以下のとおりです。 return [exitstatus]
これは現在の実行スコープを終了し、1 つ前のネストした関数、 読み込まれたスクリプト、シェルのインスタンスから、それぞれこの順で返ります。 return は現在実行中の関数を終了させます。 return は組み込みコマンドとして実装されています。
name=value
ユーザが設定する変数は、アルファベット、数字、アンダスコア (_) のみ からなる名前を持つ必要があります。また、最初の文字が数字であっては いけません。 パラメータは、以下に示す数字または特殊記号により参照することもできます。
* | 位置パラメータ 1,2,... に展開されます。ダブルクォート文字列内部で展開 される場合、展開結果は各位置パラメータの間を変数 IFS の先頭の文字 ( IFS が設定されていない場合は <空白文字> ) で区切った単一の文字列になります。 |
@ |
位置パラメータ 1,2,... に展開されます。ダブルクォート引用の内部で展開
される場合、各位置パラメータは別々の引数となります。
もし、位置パラメータが設定されていない場合には、
@
の展開結果は 0 個の引数となります (ダブルクォート引用の内部であっても)。
すなわち、$1 が
"abc"
、$2 が
"def ghi"
であった場合、
"$@"
は
次の 2 つの引数に展開されます。
"abc" "def ghi" |
# | 位置パラメータの数に展開されます。 |
amp;? | 最後に実行したパイプラインの終了ステータスに展開されます。 |
- | (ハイフン) 現在のオプションフラグ (1 文字オプション名をつないだ文字列) に展開されます。起動時に指定されたもの、組み込みコマンド set で指定した もの、シェルが暗黙に設定したもののすべてを含みます。 |
$ | 起動されたシェルのプロセス ID に展開されます。 サブシェルも親シェルと同じ値を持ちます。 |
amp;! | 現在のシェルが最後にバックグラウンドで実行したコマンドのプロセス ID に 展開されます。パイプラインの場合、パイプラインの最後のコマンドの プロセス ID になります。 |
0 | (ゼロ) シェルの名前またはシェルスクリプト名に展開されます。 |
単一の単語に対して適用されたチルダ展開、パラメータ展開、コマンド置換、 数式展開、クォート削除の結果は単一のフィールドになります。単一の単語が 複数のフィールドに分割される可能性があるのは、フィールド分割または パス名展開の場合だけです。この規則の唯一の例外は、ダブルクォート中の パラメータ @ の展開です (前述)。
単語展開の順序は以下のとおりです。
文字 "$" はパラメータ展開、コマンド置換、数式評価を行うきっかけになります。
${expression}
ここで、expression は対応した "}" までのすべての文字です。対応する "}" を調べる際に、バックスラッシュ文字によりエスケープされたり、クォート文字に 狭まれた "}" や、数式展開に埋め込まれている文字や、コマンド置換や変数展開中に ある文字は調べる対象になりません。
パラメータ展開の形式のうちもっとも単純なものは以下のとおりです。
${parameter}
そのパラメータに値が存在する場合、その値に置き換えられます。
パラメータ名やシンボルを中括弧 ({}) で囲んでも構いません。この中括弧は、 数字 2 文字以上からなる位置パラメータの場合や、パラメータ名の直後に パラメータ名の一部であるとみなし得る文字が続く場合を除き、 省略可能です。ダブルクォート引用中のパラメータ展開は以下 のようになります。
さらに、以下の形式を用いることにより、パラメータ展開の結果に修正を加える ことができます。
${parameter:-word} | |
デフォルト値への置換: パラメータ parameter が設定されていないか空の値 を持つ場合、word を展開した結果に置換されます。さもなければ、パラメー タ parameter の値に置換されます。 | |
${parameter:=word} | |
デフォルト値の代入: パラメータ parameter が設定されていないか空の値を持つ場合、word を展開 した結果が parameter に代入されます。最終的にパラメータ parameter の値 に置換されます。位置パラメータや特殊パラメータは、この方法で代入すること はできません。 | |
${parameter:?[word]} | |
空か設定されていないときにエラーとする: パラメータ parameter が設定されていないか空の値を持つ場合、word を展開 した結果 (word が省略された場合にはパラメータが設定されていないことを表す デフォルトのメッセージ) が標準エラー出力に書き出され、 シェルは非 0 の終了ステータスで終了します。 それ以外の場合、パラメータ parameter の値に置換されます。対話的シェルの場合は 必ずしも終了しません。 | |
${parameter:+word} | |
代替値の使用: パラメータ parameter が設定されていないか空の値を持つ場合、空の値に 置換されます。さもなければ、word を展開した結果に置換されます。 | |
以上のパラメータ展開において、`:' を用いた場合はパラメータが設定されていない かまたは空の値であることが検査され、`:' を省略するとパラメータが 設定されていないことのみを検査します。
${#parameter} | |
文字列の長さ: パラメータの値の (文字列としての) 長さに置換されます。 | |
以下の 4 通りのパラメータ展開は部分文字列切り出し処理を行います。各場合 において、パターンは正規表現ではなく、パターンマッチ記法 ( シェルパターン の項を参照) が用いられます。パラメータが * または @ の場合、展開の結果 がどうなるかは規定しません (unspecified)。 パラメータ展開全体をダブルクォートで囲んでも パターンは引用されません。中括弧のなかで引用することにより パターンを引用することができます。
${parameter%word} | |
最短後置パターンの削除: まず word が展開され、その結果をパターンとして扱います。 パラメータ parameter の右から、パターンに一致する最短の部分を削除した文字列に 置換されます。 | |
${parameter%%word} | |
最長後置パターンの削除: まず word が展開され、その結果をパターンとして扱います。 パラメータ parameter の右から、パターンに一致する最長の部分を削除した文字列に 置換されます。 | |
${parameter#word} | |
最短前置パターンの削除: まず word が展開され、その結果をパターンとして扱います。 パラメータ parameter の左から、パターンに一致する最短の部分を削除した文字列に 置換されます。 | |
${parameter##word} | |
最長前置パターンの削除: まず word が展開され、その結果をパターンとして扱います。 パラメータ parameter の左から、パターンに一致する最長の部分を削除した文字列に 置換されます。 | |
$(command)
またはバッククォートバージョン
`command`
とした場合に行われます。 シェルは、コマンド command をサブシェルの環境で実行し、command が標準出力 に出力したものから最後の改行文字を削除した結果で置換します。 最後以外の 改行は削除しません。ただし、フィールド分割の際に、 IFS の値や引用のされかたによっては、 ここで残った改行文字が結局は空白に置換されることもあります。
$((expression))
数式 expression は、その中のダブルクォート文字が特別扱いを受けないという 点を除いては、ダブルクォート文字で囲まれている文字列と同様に扱われます。 シェルは expression 中のすべてのトークンにパラメータ展開、コマンド置換、 クォート削除を適用します。
次にシェルはその結果を数式として扱い、その値に置換します。
シェルは、変数 IFS に設定されている文字それぞれ区切り文字とみなし、 パラメータ展開の結果、およびコマンド置換の結果をフィールドに分割します。
アスタリスク文字 (*) は、どのような文字列とも一致します。 クエスチョンマーク文字 (amp;?) は、任意の文字 1 文字と一致します。 左大括弧 ([) は文字クラスを開始します。 文字クラスの最後は右大括弧 "amp;]" です。 "amp;]" がない場合は、 "[" は文字そのものに一致し、文字クラスの開始とは見なされません。文字 クラスは大括弧内に出現するすべての文字に一致します。 マイナス記号を用いれば、文字の範囲を指定することができます。 文字クラスの最初にエクスクラメーションマーク (!amp;) を置くことで、 文字クラスの意味を反転させることができます。
文字クラスに文字 "amp;]" を含めるには、 "amp;]" を文字クラスの最初 ( "amp;!" を置く場合はそのあと) に置きます。 文字クラスに "-" を含めるときも同様で、 リストの最初もしくは最後に置きます。
amp;: | 終了ステータス 0 (真) を返すヌルコマンドです。 |
amp;. file | |
指定されたファイル file に記述されたコマンドがシェルに読み込まれ、 実行されます。 return コマンドが、 amp;. コマンドの呼び出し元に返るのにも使われます。 file に "/" 文字を含む場合、その通りに扱われます。 そうでなければ、シェルは PATH を使用して、ファイルを検索します。 PATH を使用しても見付からない場合、カレントディレクトリを検索します。 | |
alias [name ...]
alias [name=string ...] | |
name=string が指定されている場合、シェルは名前 name を持つ値 string のエイリアスを定義します。単に name だけが指定された場合、 エイリアス name の値が表示されます。引数が指定されない場合、 alias は定義されているすべてのエイリアスの名前と値を表示します ( unalias も参照)。 エイリアスの値は適切にクォートされており、 シェルへ再入力するのに適しています。 | |
bg [job ...] | |
指定されたジョブ (指定されなかった場合は現在のジョブ) を、 続けてバックグラウンドで実行させます。 | |
builtin cmd [arg ...] | |
指定された組み込みコマンド cmd を実行します。 シェル関数を同名の組み込みコマンドでオーバライドしたい場合に有用です。 | |
bind [ | |
行編集機能のキーバインドを表示もしくは変更します。 このコマンドについては editrc(5) で説明されています。 | |
cd [ | |
指定されたディレクトリ
directory
に移動します。
directory
無指定時は
HOME
で指定されるディレクトリに移動します。
directory
が
/, amp;.,
..
のいずれでも開始しない場合、指定された
directory
を
CDPATH
変数中のディレクトリリストから検索します。
CDPATH
が設定されていない場合、カレントディレクトリを検索します。
CDPATH
の形式は
PATH
と同様です。対話的シェルでは、ユーザ
が指定したディレクトリと異なる場所に移動した場合、
cd
は、移動先のディレクトリ名を表示します。
これは、
CDPATH
の機構が動作した場合と、シンボリックリンクを辿った場合に発生します。
| |
chdir | cd 組み込みコマンドの別名です。 |
command [ | |
指定された
utility
を単純コマンドとして実行します (
単純コマンド
セクションを参照)。
| |
echo [ | |
string の後に改行文字を付けて、標準出力に表示します。 | |
| |
最後の改行文字を抑制します。 | |
| |
C 風のバックスラッシュエスケープシーケンスを処理します。 echo は次の文字エスケープを理解します: | |
\a | 警告 (端末ベルを鳴らす) |
\b | バックスペース |
\c | 最後の改行文字を抑制します (改行文字が最後の文字でない場合、行が縮んでしまうという副作用があります) |
\e | ESC 文字 (ASCII 0x1b) |
\f | フォームフィード |
\n | 改行 |
\r | 復改 |
\t | 水平タブ |
\v | 垂直タブ |
\\ | バックスラッシュ文字 |
\0nnn | (この 0 はゼロです) 8 進数値が nnn である文字 |
string がクォートで括られていない場合、 シェルからエスケープするためには、 バックスラッシュ自身をバックスラッシュでエスケープする必要があります。 例えば次の通りです:
$ echo -e "a\vb" a b $ echo -e a\\vb a b $ echo -e "a\\b" a\b $ echo -e a\\\\b a\b
eval string ... | |
指定されたすべての引数を空白で結合し、その結果を解析し直してから コマンドとして実行します。 | |
exec [command [arg ...]] | |
command が省略されない場合、そのシェルプロセスは指定されたプログラムに 置き換えられます ( command は、シェル組み込みコマンドや関数ではない、本物の プログラムでなければなりません)。 exec コマンドにおけるリダイレクトは、 永久性を持つと見なされ、 exec コマンド完了後にも引き続き効力を持ちます。 | |
exit [exitstatus] | |
シェルを終了します。 exitstatus が指定された場合、これはシェルの終了ステータスになります。 そうでない場合、直前に実行したコマンドの 終了ステータスがシェルの終了ステータスとなります。 | |
export [ | |
それ以後にシェルから実行されるコマンドの環境に、指定された名前の変数が
含まれるようにします (変数のエクスポート)。
変数のエクスポートを取り消す唯一の方法は、変数を
unset
することです。
以下のように記述することで、エクスポートすると
同時に変数の値を設定することができます。
export name=value
引数を指定しない場合、すべてのエクスポートされている名前と値が表示されます。
| |
fc [ fc fc | |
fc 組み込みコマンドは、対話的シェルにそれ以前に入力されたコマンドの内容を、 表示、編集、再実行します。 | |
| |
編集に際し、指定されたエディタ
editor
を使用します。
editor
は変数
PATH
を通して検索できるコマンド名です。
| |
| |
(小文字のエル)
エディタを起動せずに、コマンド履歴の内容を一覧出力します。
パラメータ first と last で指定した範囲のコマンドが順に
(出力の順番は
| |
| |
| |
| |
コマンド一覧時 (
| |
| |
エディタを起動せずにコマンドを再実行します。 | |
first
last | |
一覧出力や編集の対象となるコマンドを選択します。アクセス可能なコマンド の数は変数 HISTSIZE の値で決まります。 first または last 、または両方の値は、以下のいずれかの形式で指定します。 | |
[+]num | |
正の数で、コマンド番号を指定します。コマンド番号は
| |
-num | 負の数は、 num 個だけ現在から遡ったコマンドを指定します。たとえば、 -1 は直前に実行されたコマンドを指定します。 |
string | |
文字列 string は、過去に実行されたコマンドのうち、
その文字列から始まる最新のものを指定します。
もし
| |
fc コマンドの実行にあたり、以下の環境変数の影響を受けます。
FCEDIT | |
使用するエディタ名 | |
HISTSIZE | |
アクセス可能なコマンド数 | |
fg [job] | |
指定されたジョブ job または現在のジョブをフォアグラウンドに移動します。 | |
getopts optstring var | |
POSIX に準拠した getopts コマンドです。 この getopts コマンドにより、以前の getopt(1) コマンドの必要性は減少しました。 最初の引数は文字の列です。各文字の後ろにはコロンをつけることができ、 そのオプションが引数をとることを指示します。 指定された変数に、解析され見つかったオプションが設定されます。 見つかったオプションの次の引数のインデックスはシェル変数 OPTIND に格納されます。 あるオプションが引数をとる場合、その引数はシェル変数 OPTARG に置かれます。 有効でないオプションに出くわすと、変数 var には "amp;?" がセットされます。 getopts はオプション群の末尾に到達すると偽の値 (1) を返します。 | |
hash [ | |
シェルは、コマンドの位置を保持するハッシュテーブルを維持管理しています。
hash
コマンドに引数が指定されなかった場合、このテーブルの内容が出力されます。
最後に
cd
コマンドが実行されてから参照されていない項目には
アスタリスク文字
が表示されます。
この項目は無効になっているかもしれません。
引数を指定した場合、
hash
コマンドは指定した
command
をハッシュテーブルから削除し (
command
が関数ではない場合)、その後でそのコマンドを検索します。
| |
jobid [job] | |
ジョブ job 中の各プロセスのプロセス ID を表示します。引数 job が 省略された場合、現在のジョブに対して処理を行います。 | |
jobs [ | |
指定されたジョブの情報を表示します。
job
引数が指定されなかった場合は、全てのジョブの情報を表示します。
情報には、ジョブ ID、ステータス、コマンド名が含まれます。
| |
pwd [ | |
カレントディレクトリのパスを表示します。組み込みコマンド版は
カレントディレクトリ名を覚えており、表示するときに再計算しないので、
組み込みコマンド版は同名のプログラムとは異なった表示をする場合があります。
このため処理は高速ですが、カレントディレクトリ
の名前を変更した場合でも、組み込み版の
pwd(1)
は以前のディレクトリ名を表示し続けます。
| |
read [ | |
| |
readonly [ | |
で指定された変数を読み出し専用とし、あとで値を変更したり unset した
りすることができないようにします。以下のように記述することで、
変数を読み出し専用と宣言するのと同時に値を設定することも可能です。
readonly name=value
引数が指定されない場合、
readonly
コマンドは、読み出し専用になっている変数の名前の一覧を表示します。
| |
set [ | |
| |
引数を指定しなかった場合、短かい形式でも長い
" | |
" | |
setvar variable value |
変数
variable
に値
value
を代入します。(
setvar
は、関数内で、パラメータとして渡された名前を持つ
変数に値を代入するためのものです。
一般に、
setvar
を使うよりも
variable=valueと書くほうが望ましいといえます。) |
shift [n] | 位置パラメータを n 回シフトします。 n を指定しない場合 1 回シフトします。 1 回のシフトにより、$2 の値が $1 に、$3 の 値が $2 に代入されます (以下同様)。また、$# の値は 1 減少します。 位置パラメータがない場合、shift は何もしません。 |
trap [action ]signal ... | シェルが指定されたシグナル signal を受けとったときに、 action を解析し実行するように設定します。 シグナルはシグナルの名前か番号で指定します。 さらに、シェル終了時に実行する動作を指定するために、擬似シグナル EXIT を使用可能です。 action は空文字列に したり、省略したりすることができます。空文字列の場合、指定されたシグナルは 無視され、省略した場合は、指定したシグナルを受けとったときデフォルトの処理を 行います。シェルがサブシェルを起動するとき、trap で指定された (が無視されていない) シグナルをデフォルトの動作に再設定します。 シェルが起動したときにすでに無視されるように設定されていたシグナルに対して trap コマンドを使用しても効果はありません。 |
type [name ...] | 各 name をコマンドとして解釈し、コマンド検索の結果を出力します。出力さ れる結果は以下のものがあります。シェルのキーワード、エイリアス、シェル の組み込みコマンド、コマンド、痕跡つきエイリアス (tracked alias)、最後に not found (見つからず) があります。エイリアスについては、エイリアス展開 の結果が出力されます。コマンドと痕跡つきエイリアスについては、そのコマンドの 完全なパス名が印刷されます。 |
ulimit [ |
リソースのリミット値 (リミット値については
getrlimit(2)
参照) を設定あるいは表示します。
limit
が指定されている場合、指定されたリソースが設定されます。
それ以外の場合、現在のリソース設定値が表示されます。
オプション
この他のオプションは、表示あるいは設定するリソースの種類を指定するものです。 これらは互いに排他的です。 |
| |
ソケットバッファサイズの最大値。バイト単位。 | |
| |
コアダンプファイルの最大サイズ。512 バイトのブロック単位。 | |
| |
プロセスのデータセグメントの最大サイズ。キロバイト単位。 | |
| |
ファイルの最大サイズ。512 バイトブロック単位。 | |
| |
プロセスがロックできるメモリサイズの最大値。キロバイト単位。 | |
| |
プロセスの常駐セットサイズの最大値。キロバイト単位。 | |
| |
あるプロセスがオープンできるファイル記述子の最大数。 | |
| |
スタックセグメントサイズの最大値。キロバイト単位。 | |
| |
各プロセスで消費できる CPU 時間の最大値。秒単位。 | |
| |
このユーザ ID で同時に走らせうる最大プロセス数。 | |
| |
1 個のプロセスの最大プロセスサイズ。キロバイト単位。 | |
umask [mask] | |
ファイル作成マスクの値 ( umask(2) を参照) を、 mask で指定された 8 進数の値に設定します。引数が 省略された場合、現在のマスクの値が表示されます。 | |
unalias [ | |
name
が指定された場合、指定された名前のエイリアスを削除します。
| |
unset [ | |
指定された変数または関数を unset し、エクスポートされていない状態にします。
| |
wait [job] | |
指定されたジョブ job が終了するのを待ち、ジョブ内の最後のプロセスの 終了ステータスを返します。引数が省略された場合、すべてのジョブが終了する まで待ち、終了ステータス 0 を返します。 | |
同様に、コマンド "set -o emacs" により emacs 風のコマンド行編集機能の サブセットを使うことができるようになります。
SH (1) | July 3, 2004 |
総合手引 | セクション 1 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | Did you know that 7/5 people don't know how to use fractions? | ” |