\r\n\r\n
Bashの組み込みコマンドはとても便利ですが、「組み込み」そのものは実際に何をするのでしょうか?本日のSuperuser Q&Aは、好奇心旺盛な読者の方からの質問にお答えします。
本日のQ&Aセッションは、コミュニティ主導のQ&Aサイト群であるStack Exchangeの分派であるSuperUserの提供によるものです。
スーパーユーザの読者であるlfalinは、Bashの組み込みコマンドが何をするものなのか知りたがっている。
組み込みコマンドはわかるけど、組み込み自体はどうするんだ?which ls を実行すると /bin/ls が表示されますが、which builtin を実行しても何も表示されません。 man builtin は builtin コマンドのリストを表示するだけで、その中のひとつが builtin です。builtin -help は builtin: usage: builtin [shell-builtin [arg ...]] と教えてくれますが、それが何をするものなのかはまだわかりません。他の組み込みコマンドがそうでないように、Bashの一部になっているのでしょうか?
Bashの組み込みコマンドは何をするのですか?
スーパーユーザーコントリビューターのスピフさんが、答えを教えてくれました。
builtinコマンドは、同じ名前の別のコマンドを実行するのではなく、シェルに組み込まれたバージョンのコマンドを実行することを確認します。
例えば、ディレクトリを変更するたびに何か特別なステータスを表示するcdというシェル関数を定義したけれど、それを失敗して、今は正しくディレクトリを変更できないとします。これで、壊れたシェル機能を実行せずに、組み込みのcd ~と入力すれば、ホームディレクトリにうまくcdで戻れるようになりました。
ちなみに、私が持っているBashのmanページには「SHELL BUILTIN COMMANDS」という項目があり、その中で組み込みコマンドの意味を定義しています(下記に転記)。
何か補足することはありますか?コメント欄でご意見をお聞かせください。他の技術に精通したStack Exchangeユーザーからもっと答えを知りたいですか?ディスカッションスレッドの全文はこちらでご確認ください。