加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 23:26:40 所属栏目:大数据 来源:网络整理
导读:在csh,tcsh,bash,perl(等)中你可以进行与之相同的测试(不一定使用相同的语法): test -e PATH; # Does PATH existtest -f PATH; # Is PATH a filetest -d PATH; # is PATh a directory... 是否存在类似的结构来检查二进制文件是否在您的路径中? (也许是否存
在csh,tcsh,bash,perl(等)中你可以进行与之相同的测试(不一定使用相同的语法):

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 /脚本语言中的类似内容.

问题不在于是否可以测试程序,命令等是否存在.问题在于是否存在内置测试.

解决方法

从技术上讲,如果您只是在当前PATH中查找内容,那么唯一真正的解决方案是第二个代码块的第一部分:

which $C

这是唯一真正符合当前PATH实际要求的那个,因为whereis将在路径之外搜索:

whereis … attempts to locate the desired program in a list of standard Linux places.

from whereis(1)

和别名当然与实际的可执行文件无关,而是与shell环境中的别名命令无关

所以,实际上,你已经有了正确的方法,只要注意你知道哪些地方可能不是对这一系列测试的有用补充.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读