Shell测试以查看二进制文件是否在您的路径中

| 在csh,tcsh,bash,perl(等)中,您可以进行与par相同的测试(不一定使用相同的语法):
test -e PATH; # Does PATH exist
test -f PATH; # Is PATH a file
test -d PATH; # is PATh a directory
...
是否存在类似的构造来检查二进制文件是否在您的路径中? (以及是否存在别名,甚至内置的别名) 显然,这可以通过以下形式完成:
#!/usr/bin/env bash
C=COMMAND;
test $(which $C) -o $(alias $C) && \"$C exists\"
或其他Shell /脚本语言中的类似内容。 问题不是是否有可能测试程序,命令等的存在。问题是是否存在内置测试。     
已邀请:
从技术上讲,如果您只是在当前的ѭ2中寻找内容,那么唯一的解决方案是第二个代码块的第一部分:
which $C
which
是唯一真正满足您当前
PATH
中实际需求的一个,因为
whereis
会在路径之外搜索:   
whereis
...试图在标准Linux位置列表中找到所需的程序。      从
whereis(1)
和“ 9”当然与实际的可执行文件无关,而是外壳环境中的别名命令 因此,实际上,您已经有了正确的方法,只是要小心,知道
whereis
可能不是该测试链的有用补充。     
要不就:
type -P awk   # returns the first matched binary called \'awk\' in current PATH
    
替代解决方案是
find $(echo $PATH|tr : \\ ) -maxdepth 0 -executable -name Executable
其中“可执行文件”是所需应用程序的名称。 例如:
find $(echo $PATH|tr : \\ ) -maxdepth 0 -executable -name awk
退货
/usr/bin/awk
/bin/awk
    

要回复问题请先登录注册