gpt4 book ai didi

bash - Shell内置执行

转载 作者:行者123 更新时间:2023-11-29 09:37:36 25 4
gpt4 key购买 nike

我对内置 shell 的定义有点困惑。根据Bash Reference Manual ,对于任何内置的,shell 直接执行命令,而不调用另一个程序。 “直接执行命令”到底是什么意思?例如,让我们看一下内置的 cd:

$ which cd 
/usr/bin/cd
$ type cd
cd is a shell builtin

现在,让我们看看非内置的grep:

$ which grep 
/usr/bin/grep
$ type grep
grep is /usr/bin/grep

cd 似乎是一个单独的二进制文件。执行 cd(或任何其他内置)与执行 grep(或任何其他非内置)有何不同?

最佳答案

一些命令既作为 shell 的内建指令存在,也作为单独的程序存在。 which 命令(这是一个单独的程序,而不是内置程序!)只能找到单独的程序,永远不会为内置程序烦恼。尝试 type readarraywhich readarray 以查看仅作为内置命令存在的命令会发生什么情况。

重要的是要注意内置版本和外部程序可能会有所不同。在某些情况下,您可能更喜欢依赖内置函数(即,如果您知道您的脚本将在哪个 shell 上使用,但不确定将执行哪个确切的外部版本),或者相反。

您可以使用其完整路径调用外部程序(这将绕过内置)。

当调用外部程序时,操作系统将启动一个单独的进程,而内置程序是 shell 程序本身的一部分,因此开销要低得多。在许多情况下,这种开销微不足道,但如果您要多次执行该命令,它可能会对脚本的性能产生重大影响。

关于bash - Shell内置执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43159243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com