我有这个脚本shell,它提取并安装libpcap库
#!/bin/sh
PATH=/usr/src
wget=/usr/bin/wget
tar=/bin/tar
echo "###############"
echo "INSTALL LIBPCAP"
echo "###############"
$tar -xvf libpcap-1.3.0.tar.gz
cd libpcap-1.3.0
./configure --prefix=/usr
make && make install
当我执行它时,我有这个错误
tar (child): gzip: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
/bin/tar: Child returned status 2
/bin/tar: Error is not recoverable: exiting now
./install.sh: 14: cd: can't cd to libpcap-1.3.0
答案 0 :(得分:2)
你已经将PATH更改为/ usr / src,所以当tar尝试执行gzip时,它找不到它,因为它只查找/ usr / src。您需要将gzip的位置添加到PATH(以及配置脚本将要调用的每个工具的位置,以及make),或者显式调用它而不是让tar调用它,或者(最佳选择) ,不要修改PATH。如果您坚持要更改PATH,请尝试PATH=/usr/src:/usr/sbin:/usr/bin:/sbin:/bin
或PATH=/usr/src:$PATH
,但实际上最好不要管它并将奇怪的名称src
放入其中。
答案 1 :(得分:0)
如果您希望/usr/src
添加到PATH
变量,那么更好的方法将是
PATH="$PATH:/usr/src"
要使脚本从任何目录路径运行,请使用一个单独的变量,该变量保存源文件路径的绝对路径,如下面脚本中使用的file_path
变量。
#!/bin/sh
PATH="$PATH:/usr/src"
wget=/usr/bin/wget
tar=/bin/tar
file_path="/path/to/source-files"
echo "###############"
echo "INSTALL LIBPCAP"
echo "###############"
$tar -xvf $file_path/libpcap-1.3.0.tar.gz
cd $file_path/libpcap-1.3.0
./configure --prefix=/usr
make && make install
答案 2 :(得分:0)
在处理gzipped tar时,你应该明确地传递选项-z
,所以你的代码应该是这样的:
$ tar -x z vf libpcap-1.3.0.tar.gz