如何使用bash检查ldconfig是否在PATH中?

时间:2011-09-20 19:21:48

标签: perl bash

我已经从网上删除了一个用于我的bash脚本的perl片段,并且由于原因太长而无法进入,如果我能够直接在bash中实现它的目的,那将会更好。

这是脚本:

bash stuff
...
perl <<'EOF'

use 5.006;
use strict;
use warnings;

if (! can_run("ldconfig")) {
    die "you need to have ldconfig in your PATH env to proceed.\n";
}

# check if we can run some command
sub can_run {
    my ($cmd) = @_;

    #warn "can run: @_\n";
    my $_cmd = $cmd;
    return $_cmd if -x $_cmd;

    return undef;

EOF
more bash stuff

基本上,问题可以改为:“如何使用bash检查ldconfig是否在PATH环境中?”

3 个答案:

答案 0 :(得分:5)

你想要bash的内置type命令:

if type -P ldconfig; then
  echo "ldconfig is in the PATH"
else
  echo "ldconfig is not in the PATH"
fi

表示消极:

if ! type -P ldconfig; then
  echo "ldconfig is not in the PATH"
fi

答案 1 :(得分:3)

更直接的解决方案是调用shell和which命令:

$path = `which ldconfig`;

if ($path) {
  ...
}

如果识别出ldconfig,将返回其可执行文件的路径,否则返回空输出。

或者,如果这个Perl脚本不会做更多的事情,你可以解雇它并从bash执行相同的命令。

答案 2 :(得分:0)

我精炼了@glenn jackman的答案,让它“安静”。它按原样工作,但除了路径中的echo之外,它还向屏幕输出“/ sbin / ldconfig”。通过此修改,仅输出回声:

type ldconfig &>/dev/null

if [ "$?" -eq 0 ]
then
  echo "ldconfig is in the PATH"
else
  echo "ldconfig is not in the PATH"
fi

感谢所有人。