phg*_*phg 15
这取决于。
命令可以分为多个类别:内置命令、别名、函数、可执行文件(搜索路径中的脚本和二进制文件)。
在命令行上,它们占据一个单一的、扁平的命名空间,这使得覆盖成为可能。有多种方法可以区分各种程序:
$ f () { :; }
$ alias a=cat
$ which f
f ()
{
:
}
Run Code Online (Sandbox Code Playgroud)
我们知道这f是一个函数。
$ which a
alias a='cat'
/usr/bin/cat
Run Code Online (Sandbox Code Playgroud)
我们知道这a是一个别名。
$ which yes
/usr/bin/yes
Run Code Online (Sandbox Code Playgroud)
我们知道这yes是一个程序。
$ builtin echo ; echo $?
0
Run Code Online (Sandbox Code Playgroud)
外壳有一个echo内置的…
$ builtin cat ; echo $?
bash: builtin: cat: not a shell builtin
1
Run Code Online (Sandbox Code Playgroud)
……但没有cat。如果有内置命令或别名,但您坚持调用该程序,请在命令前加上反斜杠:
$ builtin true | printf "%d\n" $?
0
$ alias true=false
$ true ; printf "%d\n" $?
1
$ \true ; printf "%d\n" $?
0
Run Code Online (Sandbox Code Playgroud)
小智 3
a 的定义function返回单个值,并且不输出任何内容。特别是 Shell 函数,可能会产生输出或其他副作用,因为函数的返回值非常有限。
Acommand是用户发出的指令,告诉计算机做某事,例如执行单个程序或一组链接的程序。
Aprogram是给予计算机并且可由计算机的中央处理单元(CPU)理解的指令序列(即命令)。这些指令指示计算机应对一组数据执行哪些操作。
话虽如此,functions它们是程序的逻辑子集。呼叫某人完全在您的流程之内。这command是一个可以从命令 shell 执行的程序(或内置 shell)。该命令实现执行任务的函数。反之则不正确。