cd ..
のようなコマンドは実際には に変換されてから実行されることに気付きましたbuiltin cd ..
。しかし、 はどのようにbuiltin
定義されていますか?which builtin
には何も表示されず/bin
、/usr/bin
などにもありません。これは単に bash プログラムの一部であり、別の方法で処理されているのでしょうか?
答え1
組み込みコマンドは bash の一部です。 コマンドが組み込みコマンドであるかどうかを確認するには、 を使用しますtype
。 例:
$ type export cd source alias
export is a shell builtin
cd is a shell builtin
source is a shell builtin
alias is a shell builtin
多くの組み込みコマンドは、他の方法では動作できないために組み込まれています。 cd
およびsource
は例です。
その他の組み込み関数は、効率化のためだけに組み込まれています。 test
(別名[...]
) および はecho
例です。
詳細については、SHELL BUILTIN COMMANDS
のセクションman bash
またはオンラインをご覧ください。bash マニュアル使用可能な組み込みコマンドの一覧を取得するには、help
コマンド プロンプトで を実行します。 などの特定の組み込みコマンドに関する情報を取得するにはtest
、 を実行します。 はbash の組み込みコマンドに関する情報を提供しますが、 は外部コマンドに関するヘルプを提供する可能性が高いことにhelp test
注意してください。help test
test
man test
test
実行可能および組み込みの両方で使用できるコマンド
オプションを使用すると-a
、type
指定されたコマンドが含まれるすべての場所が表示されます。例:
$ type -a echo
echo is a shell builtin
echo is /bin/echo
組み込みが利用可能な場合に実行可能ファイルを使用する方法
何らかの理由で、シェルの組み込みではなく特定の実行可能ファイルを使用する場合は、パスを指定するだけです。
$ /bin/echo "This is not the builtin"
This is not the builtin
通常、組み込み機能にはより多くの機能があるため、これは通常、互換性テストにのみ役立ちます。
関数またはエイリアスによって隠されているときにシェル組み込みを実行する方法
選択肢が与えられた場合、シェルは通常、組み込みコマンドの実行を選択します。例外は、ユーザーが同じ名前のエイリアスまたは関数を定義している場合です。組み込みコマンドを確実に実行したい場合は、次のbuiltin
コマンドを使用します。
$ builtin echo 1 2 3
1 2 3