我在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! 杰夫
答案 0 :(得分:1)
一个建议是放置一行:
set -x
紧接在shebang行(第1行)之后,命令在执行之前被回显。
这将向您显示正在发生的任何有问题的扩展,并可能导致您解决问题。
你可能也需要把它放在每个函数的开头,我不记得它是否继续进入函数。但首先在脚本的顶部尝试它。
答案 1 :(得分:1)
$($dir/$cmd $arg1 $arg2 $arg3 $arg4 $arg5)
我认为你不需要在内部进程替换。它的输出也将被执行。您还应该正确引用变量。
"$dir/$cmd" "$arg1" "$arg2" "$arg3" "$arg4" "$arg5"