shell命令分类

linux的shell命令总共分为5中,alias,function,file,builtin,keyword。

alias就是别名,function就是自己创建的shell函数,file就是path路径里的一些二进制或者其他sh文件等挂在硬盘上的文件,keyword就是shell的关键字。

可以通过type -t command来查看,另外如果一个命令是file的话,可以通过type -p command查看该命令的绝对路径..。

关于一个命令的运行到底有没有开辟新的进程,我们可以通过一种方法查看,首先运行该命令,然后ps -elf | grep一下就可以了,可以肯定的是file类型的command肯定是在子进程中运行的,但是builtin就不好说了,我man type一下:


Shell builtin commands are commands that can be executed within the running shell's process.  Note that, in the case of csh(1) builtin commands, the command is executed in a sub-

     shell if it occurs as any component of a pipeline except the last.


     If a command specified to the shell contains a slash ``/'', the shell will not execute a builtin command, even if the last component of the specified command matches the name of

     a builtin command.  Thus, while specifying ``echo'' causes a builtin command to be executed under shells that support the echo builtin command, specifying ``/bin/echo'' or

     ``./echo'' does not.

上面说的很清楚,第一段的意思是builtin命令可以在当前shell中运行,但是在csh中,如果在使用管道的时候内建命令不是在最后面,就会在子进程中运行。第二段的意思是如果使用绝对路径或者相对路径使用命令,即使最终引用的命令和builtin命令一样,也会在子进程中运行,相当于file类型的了。

阿里云双十一云服务器拼团活动,已经打到最低价99元一年!有需要的可以考虑一波了!

https://m.aliyun.com/act/team1111/#/share?params=N.9g4CZ2TwSh.qilw7y0a

---------------------

作者:pysta

来源:CSDN

原文:https://blog.csdn.net/Yvlen/article/details/79254439

版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(shell命令分类)