首先,编辑foo.sh
,写入以下内容,确保最后有个空白行
#!/usr/bin/env bash
sed '1,/^#__END__$/d' $0 | tar zxf -
exit
#__END__
然后,把要打包的的文件用tar
打成压缩包,并添加到脚本尾部,最后给脚本加上可执行属性
tar -zcf foo.tar.gz foo
cat foo.tar.gz >> foo.sh
chmod +x foo.sh
如果要使用xz
压缩,则脚本、需要执行的命令如下
#!/usr/bin/env bash
sed '1,/^#__END__$/d' $0 | tar Jxf -
exit
#__END__
tar -Jcf foo.tar.xz foo
cat foo.tar.xz >> foo.sh
chmod +x foo.sh