2013-09-11 86 views
0

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

它看起来很有效直到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是我的脚本,它基本上只是解压的须藤并设置路径。然后,它运行的功能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! TIA! 杰夫

回答

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

你不需要把我认为的内部进程替换。它的输出也会被执行。你也应该引用你的变量。

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

谢谢,那就是诀窍! – user2766895

0

一个建议是放置行:

set -x 

shebang行之后立即(线#1),以使得命令被执行之前的响应。

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

可能也需要把它放在每个函数的开始处,我不记得它是否继承了函数。但先试着在脚本的顶部。

+0

谢谢,我已经试过了,一切正常扩展,所以它似乎不是实际脚本的问题,但更多的libtool片和配置问题。 – user2766895