最も一般的な 3 種類のシェル
ほとんどのシステムでは複数のシェルが提供されている。多くの場合、シェルスクリプトの作成では Bourne シェルを使用し、対話で使用するときは他の 2 つのシェルを使用する。
/etc/passwd ファイルは、対話型 UNIX セッションでどのシェルを使用吸うかを定義します。ログイン時に、/etc/passwd のエントリがチェックされます。各エントリーの最後のフィールドは、デフォルトシェルとして実行するプログラムを示します。
プログラム名 | 実行するシェル |
---|---|
/bin/sh | Bourne シェル |
/bin/rsh | 制限付き Bourne シェル |
/bin/jsh | ジョブ制御を含む Bourne シェル |
/bin/ksh | Korn シェル |
/bin/rksh | 制限付き Korn シェル |
/bin/csh | C シェル |
コマンドラインにプログラム名を入力すれば、別のシェルに変更できます。たとえば、Bourne シェルから C シェルに変更するには、次のように入力する。
$ exec csh
次の表に、Bourne シェル、Korn シェル、C シェルに共通の機能を示します。Korn シェルは Bourne シェルの拡張バージョンです。したがって、Korn シェルには Bourne シェルのすべての機能のほかに、追加機能も含まれています。コマンド bg、fg、jobs、stop、suspend はジョブ制御をサポートするシェルのみ使用できます。
記号/コマンド | 意味/動作 |
---|---|
> | 出力をリダイレクトします |
>> | ファイルの最後に追加します |
< | 入力をリダイレクトします |
<< | ヒアドキュメント (入力のリダイレクト) |
| | 出力をパイプします |
& | プロセスをバックグラウンドで実行します |
; | 同じ行のコマンドを区切りします |
* | ファイル名のどの文字とも一致します |
? | ファイル名の 1 文字と一致します |
[ ] | [ ] で囲んだ 1 文字のいずれかと一致します |
( ) | サブシェルで実行します |
` ` | ` ` で囲んだコマンドを先に実行して、その出力と置換します |
" " | 部分的な引用を示します (変数とコマンドの展開が可能) |
' ' | 完全な引用 (展開なし) |
\(バックスラッシュ) | 後続の文字を引用 (後続の文字の特殊な意味を解除します) |
$var | 変数の値を使用します |
$$ | プロセス ID |
$0 | コマンド名 |
$ n | n 番目の引用 (0 |
$* | すべての引用を単純な単語として表します |
# | コメントを示します |
bg | バックグラウンドで実行します |
break | ループから脱出します |
cd | カレントディレクトリを変更します |
continue | プログラムループを再開します |
echo | 引数を表示します |
eval | 引数を評価します |
exec | 新しいシェルを実行します |
fg | フォアグラウンドで実行します |
jobs | アクティブジョブを表示します |
kill | 実行中のジョブを終了します |
newgrp | 新しいグループに変更します |
shift | 位置パラメータをシフトします |
stop | バックグラウンドジョブを一時停止します |
suspend | フォアグラウンドジョブを一時停止します |
time | コマンドの実行時間を測定します |
umask | デフォルトのファイルアクセス権を設定するか、または、アクセス権の一覧を表示します |
unset | 変数または関数の定義を解除します |
wait | バックグラウンドジョブが終了するのを待ちます |
3 つのシェルで異なる機能を示します。
sh | ksh | csh | 意味/動作 |
$ | $ | % | プロンプト |
|
| >! | 強制的なリダイレクト |
|
| >>! | 強制的な追加 |
> file 2>&1 | > file 2>1 | >& file | stdout とstderr の組み合わせ |
|
| {} | リスト内の要素を展開します |
` ` | $( ) | ` ` | ` ` で囲んだコマンドを実行して、その出力と置換します |
$HOME | $HOME | $home | ホームディレクトリ |
| ~ | ~ | ホームディレクトリを表す記号 |
var = value | var = value | set var = value | 変数に値を代入します |
export var | export var = val | setenv var val | 環境変数を設定します |
| ${ nn } |
| 9 つより多くの引数を参照できます |
"$@" | "$@" |
| すべての引数を個別の単語として示します |
$# | $# | $#argv | 引数の数 |
$? | $? | $status | 終了ステータス |
$! | $! |
| バックグラウンドの終了ステータス |
$- | $- |
| 現在のオプション |
. file | . file | source file | file からコマンドを読みこみます |
| alias x = y | alias x y | 名前 x が y をあらわすことを示します |
case | case | switch/case | 場合分けを指定します |
| cd ~- | popd/pushd | ディレクトリを切り替えます |
done | done | end | ループステートメントを終了します |
esac | esac | endsw | case または switch を終了します |
exit [n] | exit [n] | exit [(expr)] | ステータスを指定して終了します |
for/do | for/do | foreach | 変数を使用してループします |
| print -r | glob | echo のエスケープを無視します |
hash | alias -t | hashstat | コマンドのハッシュの状態を表示します |
hash cmds | alias -t cmds | rehash | コマンドの位置を記憶します |
hash -r |
| unhash | コマンドの位置を解除します |
| history | history | 前に実行したコマンドをリストします |
| r | !! | 前に実行したコマンドを再実行します |
| r str | ! str | str からはじまるコマンドを再実行します |
| r x = y cmd | ! cmd :s/x/y/ | コマンドを変更して実行します |
if[$i eq 5] | if ((i==5)) | if ($i==5) | if ステートメントの例 |
fi | fi | endif | if ステートメントを終了します |
ulimit | ulimit | limit | リソースの制限を設定します |
pwd | pwd | dirs | カレントディレクトリを表示します |
read | read | $, | 端末から読み取りします |
trap 2 | trap2 | onintr | 割り込みを無視します |
| unalias | unalias | エイリアスを解除します |
until | until |
| until ループを開始します |
while/do | while/do | while | while ループを開始します |