組み込みコマンドがシェルで実行されると、正確に何が起こりますか?

組み込みコマンドがシェルで実行されると、正確に何が起こりますか?

外部コマンドが別々のプロセスを作成してシェルで実行されることを知っていますが、シェルで組み込みコマンドを実行するとどうなりますか?

関数として実行されますか、シェルはそれを実行するために新しいスレッドを作成しますか?

ベストアンサー1

cd_builtin具体的な例には、buildins/cd.def(bashソースコード)で定義された関数があります。通常cd、この関数を呼び出すことによって行われます。ただし、パイプラインで使用している場合は、最初に分岐できます。たとえば、cd / | echo子を分岐して呼び出しますcd_builtin。実際には変更されていないディレクトリを介して確認することもできます。

anthony@Zia:~$ cd /tmp/
anthony@Zia:/tmp$ cd / | echo -n
anthony@Zia:/tmp$ cd /
anthony@Zia:/$ 

ディレクトリはパイプしない場合にのみ変更されることに注意してくださいcd

おすすめ記事