Linux 二进制安装程序(.bin、.sh)如何工作?

2024-03-14

一些软件(例如NetBeans 集成开发环境 http://www.netbeans.org)以 .sh 文件形式提供 Linux 安装程序。我很好奇他们到底是如何将整个 IDE“打包”成“shell 脚本”的,因此我在编辑器中打开了该文件。我看到一些纯文本 shell 脚本代码,然后是一些随机的乱码,我认为它们是“二进制”或非纯文本。

我想知道他们如何混合普通的 shell 脚本,然后可能调用“不可读”的东西,即二进制文件。

对此有何见解?


基本上,它是一个附加到某种压缩存档(例如 tar 存档)之前的 shell 脚本。您使用tail or sed对自己的命令($0Bourne 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(使用前将#替换为@)

Linux 二进制安装程序(.bin、.sh)如何工作? 的相关文章

随机推荐