一些软件(例如NetBeans 集成开发环境 http://www.netbeans.org)以 .sh 文件形式提供 Linux 安装程序。我很好奇他们到底是如何将整个 IDE“打包”成“shell 脚本”的,因此我在编辑器中打开了该文件。我看到一些纯文本 shell 脚本代码,然后是一些随机的乱码,我认为它们是“二进制”或非纯文本。
我想知道他们如何混合普通的 shell 脚本,然后可能调用“不可读”的东西,即二进制文件。
对此有何见解?
基本上,它是一个附加到某种压缩存档(例如 tar 存档)之前的 shell 脚本。您使用tail
or sed
对自己的命令($0
Bourne shell 中的变量)来剥离前面的 shell 脚本并将其余部分传递给您的解档器。
例如,创建以下脚本self-extracting
:
#!/bin/sh -e
sed -e '1,/^exit$/d' "$0" | tar xzf - && ./project/Setup
exit
The sed
上面的命令删除从文件第一行到第一行以“exit”开头的所有行,然后传递其余行。如果“exit”行之后立即开始的是 tar 文件,则tar
命令将提取它。如果成功的话,./project/Setup
文件(可能是从 tarball 中提取的)将被执行。
Then:
mkdir project
echo "#!/bin/sh" > project/Setup
echo "echo This is the setup script!" >> project/Setup
chmod +x project/Setup
tar czf - project >> self-extracting
现在,如果你摆脱旧的project
目录下,可以运行self-extracting
它将提取该 tar 文件并运行安装脚本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)