我了解到,使用exec()调用发出的命令的可执行文件应该存储在PATH变量一部分中的目录中。
因此,我ls, chmod, grep, cat在/ bin中找到的可执行文件。
ls, chmod, grep, cat
但是,我找不到的可执行文件cd。
cd
它在哪里?
进程只能影响其自己的工作目录。当可执行文件由外壳执行时,它将作为子进程执行,因此cd可执行文件(如果存在)将在不影响父进程(外壳)的情况下更改该子进程的工作目录,因此cd命令必须实现为内置的shell,实际上在shell自己的进程中执行。