bash 文件可以有机器语言吗?

bash 文件可以有机器语言吗?

我正在安装蚺蛇在 Linux 上。对于Linux,Anaconda提供了bash脚本,但文件很大,将近300 MB。我决定看看为什么,并在文本编辑器中打开它。

该文件大约 95% 都是机器语言乱码,如下所示:

ºîØôЕzÒA¶©h¶¥R•„&´ìÒUÓçß3{^eÑòà(|ÄÃk뎆ºîØôЕzÒA¶©h¶¥R•„&´ìÒUÓçß3{™½ö|q ŽÖm¶¥¡ôÚ­gú¡@óìÛkkº£C»Iš)à÷¾Û¸êw½æõîJN7í×p€A¡ÈzÞÝï8

该文件没有损坏,因为我可以安装 Python。

其中大部分都在许可证文件中,所以我想知道它是否是另一种语言的 unicode,但这不会占用文件的 95%,不是吗?

可以编译代码/机器语言吗?是否允许将机器代码放入 bash 文件中?

答案1

扩展@Graeme 的评论。

下载的脚本是一个带有嵌入式 tarball 的 bash 脚本。这脚本部分首先通过 md5sum 验证 tarball,然后解压 tar,其中包含多个.tar.bz2存档。然后,它继续使用自定义函数extract_dist()来解压缩档案。 IE:

extract_dist python-2.7.10-0
extract_dist conda-3.14.1-py27_0
...

提取文件:

python-2.7.10-0.tar.bz2
conda-3.14.1-py27_0.tar.bz2
...

对于 32 位版本脚本部分可以通过以下方式提取:

head -n 467 Anaconda-2.3.0-Linux-x86.sh

对于 64 位版本脚本部分可以通过以下方式提取:

head -n 466 Anaconda-2.3.0-Linux-x86_64.sh

正如你所看到的脚本部分以中止exit 0bash 对脚本的任何进一步处理。

tarball 是通过以下方式提取的:

tail -n +469 $THIS_PATH | tar xf - --no-same-owner
tail -n +468 $THIS_PATH | tar xf - --no-same-owner

分别针对 32 位和 64 位。

例如,您可以这样做:

tail -n +469 Anaconda-2.3.0-Linux-x86.sh | tar -t

列出 32 位存档中的文件。

相关内容