外部コマンドが別々のプロセスを作成してシェルで実行されることを知っていますが、シェルで組み込みコマンドを実行するとどうなりますか?
関数として実行されますか、シェルはそれを実行するために新しいスレッドを作成しますか?
ベストアンサー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
。