在shell中如何实现内置命令?

当一个shell(例如bash )调用一个可执行文件时,它首先fork自己,然后它的execve执行文件。

当shell调用内置命令时,不会创build新的进程,而execve只能对可执行文件进行操作,而内置命令不会存储在可执行文件中。

那么如何存储内置的命令,以及如何调用系统调用

“内建命令”意味着您不必运行外部程序。 所以,不,根本就不涉及任何execve ,不,甚至没有任何涉及的系统调用。 你的shell真的只是解析一个命令字符串,并看到“嘿,这是一个内置的命令,让我们执行这个和那个功能”。

你可以想象它们和shell函数是一样的。

因此,shell不是启动外部进程,而是调用一些内部函数库函数,它读取输入的输出结果,几乎与常规程序的主要功能相同。

shell进程本身只是处理内置的,并可能因此而改变自己或其环境。 可能根本没有任何系统调用。