如何测试命令是别名,函数还是二进制?


Answers:


23

如果您使用的是Bash(或其他类似Bourne的外壳),则可以使用type

type command

会告诉您command是内置的shell,别名(如果是,别名为什么),函数(如果是,它将列出函数主体)或存储在文件中(如果是,则为文件的路径) 。

有关“二进制”文件的更多信息,您可以执行

file "$(type -P command)" 2>/dev/null

如果command是内置的别名,函数或外壳程序,则不会返回任何内容,但如果是脚本或已编译的二进制文件,则将返回更多信息。

参考文献


3

答案将取决于您所使用的外壳。

对于zsh,shell内置的内容whence -w会告诉您您到底想要什么

例如

$ whence -w whence
whence : builtin
$ whence -w man     
man : command 

1

在zsh中您可以检查aliasesfunctions以及commands阵列。

(( ${+aliases[foo]} )) && print 'foo is an alias'
(( ${+functions[foo]} )) && print 'foo is a function'
(( ${+commands[foo]} )) && print 'foo is an external command'

还有builtins,用于内置命令。

(( ${+builtins[foo]} )) && print 'foo is a builtin command'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.