LoginSignup
41
37

More than 5 years have passed since last update.

POSIX シェルの組み込みコマンド一覧

Last updated at Posted at 2014-03-08

特殊組み込みコマンド

特殊組み込みコマンドは、以下の特性を持つ

  • 対応する外部コマンドがなくても必ず実行される
  • 同名の関数で動作を上書きできない
  • シェルが対話モードでないとき (≒ シェルスクリプトを実行中のとき)、以下のエラーが発生するとシェルは直ちに終了する
    • コマンドの構文誤り
    • リダイレクト失敗
    • 変数代入失敗
  • 特殊組み込みコマンドに対して行った変数代入は特殊組み込みコマンド実行終了後も残る
$ foo=1 eval 'echo $foo' # 特殊組み込みコマンド
1
$ bar=2 cat /dev/null # 普通のコマンド
$ echo foo=$foo bar=$bar
foo=1 bar=

特殊組み込みコマンド:

  • .
  • :
  • break
  • continue
  • eval
  • exec
  • exit
  • export
  • readonly
  • return
  • set
  • shift
  • times
  • trap
  • unset

準特殊組み込みコマンド

POSIX には「準特殊」なる用語は出てこないが、ここでは便宜上その様に呼んでおく。

準特殊組み込みコマンドは、対応する外部コマンドがなくても必ず実行される。(他の点は普通の組み込みコマンドと同じ)

準特殊組み込みコマンド:

  • alias
  • bg
  • cd
  • command
  • false
  • fc
  • fg
  • getopts
  • hash
  • jobs
  • kill
  • newgrp (注)
  • pwd
  • read
  • true
  • type
  • ulimit
  • umask
  • unalias
  • wait

(注) 実際に newgrp を組み込みコマンドとして有するシェルは少ない。

普通の組み込みコマンド

特殊組み込みコマンドでも準特殊組み込みコマンドでもない組み込みコマンドは、普通の組み込みコマンドである。

普通の組み込みコマンドは、POSIX では「外部コマンドを起動する代りにシェルが直接コマンドの機能を実行することによって高速化を図るもの」との位置付けなので、明確にどのコマンドが組み込みでどれが外部コマンドであるかの規定は無い。これは、厳密には「対応する外部コマンドが存在しなければ組み込みコマンドも存在しないと見做される」ことを意味するが、この点を厳格にチェックするシェルは少ない。

以下に、多くのシェルに共通の組み込みコマンドを挙げる。POSIX の欄のチェックは、POSIX にコマンドの定義があるものを指す。一部のシェルでは、以下のいくつかのコマンドは組み込みコマンドではなくエイリアスである。

コマンド POSIX bash dash zsh ksh mksh yash
[
dirs
disown
echo
history
let
local
popd
print
printf
pushd
test
typeset
41
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
37