我有一个Bash shell脚本,它将三个输入文件作为参数。我想将它们打包,所以我可以将该软件包放在任何UNIX机器上并运行它。
答案 0 :(得分:2)
有一种古老而古老的技术可以在灰色头发管理员熟知的可执行文件中包含tar文件;)
首先创建一个脚本...将其放入名为script
的文件中#!/bin/bash
TAR_STARTS=`awk '/^__TARMAN BEGINS__/ { print NR + 1; exit 0; }' $0`
NAME_OF_SCRIPT=`pwd`/$0
tail +$TAR_STARTS $NAME_OF_SCRIPT | gunzip -c | tar -xvf -
# Insert commands to execute after untaring here .... with relative
# pathname (e.g. if there is directory "bin" with a file "executable"
# then you should insert a line bin/executable
exit
__TARMAN BEGINS__
最后一次__
后没有换行符当然,这个脚本来自互联网的某个地方。不是我的。我只是不记得哪里有适当的荣誉。
然后创建tarfile并将其放在文件的末尾。这就是为什么在__
之后没有换行的必要条件$ cat script test.tar.gz > selfexploding.sh
现在你可以尝试一下
$ bash ./selfexploding.sh
tar: blocksize = 9
x testtar, 0 bytes, 0 tape blocks
x testtar/test2, 1024 bytes, 2 tape blocks
x testtar/test1, 1024 bytes, 2 tape blocks
你当然可以在退出之前输入一个脚本的名称,你可以通过解包来创建...当然,path必须是相对于执行的pwd。不知道这是否适用于AIX。至少在Solaris 11.3中它可以工作。但因为它只使用标准命令。它应该无处不在。除此之外,您当然可以为Solaris和AIX创建本机包。