bash脚本从sudo运行./configure

时间:2013-09-11 01:05:44

标签: bash configure

我在Solaris上使用GNU bash,版本3.2.51(1)-release(sparc-sun-solaris2.10)并尝试在执行其他一些项目后编写一个bash脚本来配置/编译sudo。基本上我希望能够让运营商运行这个脚本,这样他们就可以通过运行这个脚本从源代码安装sudo,而不必担心运行./configure with options和make等。

看起来它一直运行到config.status libtool部分,然后它死了:

: creating pathnames.h config.status: pathnames.h is unchanged config.status: executing libtool commands
./install_sudo.sh: line 55: configure:: command not found

install_sudo.sh是我的脚本,它基本上只是解压缩sudo并设置路径。然后它运行一个函数ConfigureSudo:

这是现在的脚本无法处理上述错误:

#!/usr/bin/bash
Unpack(){
SRCA="sudo-1.8.7.tar.gz"
SRCB="sudo-1.8.7.tar"

if [ -f $PWD/$SRCA ]; then
 echo "sudo source appears to be here!"
 `/usr/bin/gunzip "$SRCA"`
 `/usr/bin/tar xf "$SRCB"`
  else
 echo "Check your source file."
fi
}

SetupPath(){
echo "Setting up path to use included Solaris software..."
echo "Current PATH is $PATH"
PATH=/usr/sfw/bin:/usr/sfw/sbin:/usr/sfw/sparc-sun-solaris2.10/bin:$PATH
echo "Now set to $PATH"
}

ConfigureSudo(){
dir="/tmp/sudo-1.8.7"
arg1="--prefix=/usr/local"
arg2="--sysconfdir=/etc"
arg3="--localstatedir=/var/run/sudo"
arg4="--with-pam"
arg5="--with-timedir=/var/lib/sudo"
cmd=configure

$($dir/$cmd $arg1 $arg2 $arg3 $arg4 $arg5)
}

Unpack
SetupPath
ConfigureSudo

非常感谢任何帮助过去。 TIA! 杰夫

2 个答案:

答案 0 :(得分:1)

一个建议是放置一行:

set -x

紧接在shebang行(第1行)之后,命令在执行之前被回显。

这将向您显示正在发生的任何有问题的扩展,并可能导致您解决问题。

可能也需要把它放在每个函数的开头,我不记得它是否继续进入函数。但首先在脚本的顶部尝试它。

答案 1 :(得分:1)

$($dir/$cmd $arg1 $arg2 $arg3 $arg4 $arg5)

我认为你不需要在内部进程替换。它的输出也将被执行。您还应该正确引用变量。

"$dir/$cmd" "$arg1" "$arg2" "$arg3" "$arg4" "$arg5"