我正在编写一个脚本来创建源环境。处理 PATH 部分很容易。虽然我应该如何检查将路径添加到 PATH 中的程序是否可以正确执行?使用which
是不够的,因为它只是检查可执行文件的存在,而不是运行它。我现在得到的是检查程序的版本(即find -version
)并检查返回消息是否包含“ command not found
”。这并不理想。有一个更好的方法吗?
我正在编写一个脚本来创建源环境。处理 PATH 部分很容易。虽然我应该如何检查将路径添加到 PATH 中的程序是否可以正确执行?使用which
是不够的,因为它只是检查可执行文件的存在,而不是运行它。我现在得到的是检查程序的版本(即find -version
)并检查返回消息是否包含“ command not found
”。这并不理想。有一个更好的方法吗?
我认为没有理想的方式来做你想做的事。正如马丁所说,您可以检查可执行位是否已设置,但这并不能确认它是否会实际运行。
您可以做的一件事是尝试运行程序,而不是从程序本身中查找特定文本,而是查看
$?
变量。这将返回程序的退出状态(通常为 0 表示 OK)或(在 CentoOS 系统上我必须手头)127 表示找不到文件,例如没有理想方法的原因是 OK 的退出状态为 0 只是常规的,如果程序运行但遇到错误,它们可能会返回不同的退出状态。这可能对您有用,直到某些东西运行并返回退出状态 127 以指示某些错误情况。
您可以使用
-x
运算符来测试是否在文件上设置了可执行标志。它不会告诉您可执行文件是否会真正运行。