当shell(例如bash
)调用可执行文件时,它首先fork
本身,然后复制execve
可执行文件。
当shell调用内置命令时,没有创建新进程,execve
只能对可执行文件进行操作,而内置命令不存储在可执行文件中。
那么如何存储内置命令,以及如何根据系统调用调用它们?
答案 0 :(得分:1)
“内置命令”意味着您不必运行外部程序。所以,不,根本没有涉及execve
,不,甚至没有涉及任何系统调用。你的shell实际上只是解析命令字符串并看到“嘿,这是一个内置命令,让我们执行这个和那个函数”。
答案 1 :(得分:1)
您可以想象它们与shell函数相同。
因此,shell不会启动外部进程,而是调用一些内部函数库函数,该函数读取输入结果并与常规程序的主函数完全相同。
答案 2 :(得分:0)
shell进程本身只处理内置函数,并可能因此修改自身或其环境。可能根本没有进行任何系统调用。