0

我在 Solaris 上使用 GNU bash 版本 3.2.51(1)-release (sparc-sun-solaris2.10) 并尝试编写一个 bash 脚本来配置/编译 sudo 在做了一些其他项目之后。本质上,我希望能够让操作员运行这个脚本,这样他们就可以通过运行这个脚本从源代码安装 sudo,而不必担心运行带有选项和 make 等的 ./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 是我的脚本,它基本上只是 untar 的 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

非常感谢您提供的任何帮助。蒂亚!杰夫

4

2 回答 2

1

一个建议是放置这条线:

set -x

紧跟在 shebang 行(第 1 行)之后,以便在执行命令之前回显命令。

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

可能还需要将它放在每个函数的开头,我不记得它是否会延续到函数中。但请先在脚本顶部尝试。

于 2013-09-11T01:17:20.563 回答
1
$($dir/$cmd $arg1 $arg2 $arg3 $arg4 $arg5)

我认为您不需要将其放在流程替换中。它的输出也将被执行。您还应该正确引用您的变量。

"$dir/$cmd" "$arg1" "$arg2" "$arg3" "$arg4" "$arg5"
于 2013-09-11T08:01:53.833 回答