我无法了解如何查看环境变量PATH
的文件夹中是否包含命令。我尝试了命令:
$type -t $command
但它不起作用。
任何人都可以帮助我吗?
答案 0 :(得分:2)
这应该有效:
if [[ $(type -p command) ]]; then
echo "Found"
else
echo "Not Found"
fi
您也可以使用-t
(请参阅底部的例外情况。)。
或(仅使用type
测试退出状态):
if type command >& /dev/null; then
echo "Found"
else
echo "Not Found"
fi
注意:请参见底部的例外情况。
另一种解决方案(使用hash
):
if [[ ! $(hash command 2>&1) ]]; then
echo "Found"
else
echo "Not Found"
fi
注意:请参见底部的例外情况。
例外:
type command
type help
hash command
hash help
type -t command
type -t help
command
和help
是bash内置函数,它们不在PATH环境变量的任何路径中。因此,除了第一个(使用-p
选项)之外的其他方法将打印找到用于bash内置命令,这些命令不在环境PATH变量的任何路径中。
如果您只想检查它是否位于PATH环境变量的路径中,请更好地使用第一种方法(使用-p
选项)。
或者如果您想使用type -t
,请更改if语句:
if [[ $(type -t command) == file ]]; then
答案 1 :(得分:0)
你的意思是看你的路吗?类似于:
$ set | grep PATH
哦,现在我明白了。检查路径中的可执行文件非常简单。我通常使用以下内容:
## test for exe in PATH or exit
exevar="$(which exe 2>/dev/null)"
[ x = x$exevar ] && { echo "'exe' not in path"; exit 1; }
## exe in path, continue
echo "exevar = $exevar"
或使用type -p
取消对which
## test for exe in PATH or exit
exevar="$(type -p exe 2>/dev/null)"
[ x = x$exevar ] && { echo "'exe' not in path"; exit 1; }
## exe in path, continue
echo "exevar = $exevar"