找出环境变量PATH的文件夹中是否包含命令

时间:2015-05-23 08:47:46

标签: linux bash shell path environment-variables

我无法了解如何查看环境变量PATH的文件夹中是否包含命令。我尝试了命令:

$type -t $command 

但它不起作用。

任何人都可以帮助我吗?

2 个答案:

答案 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

commandhelp是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"