这实际上取决于您试图阻止谁阅读脚本以及您希望系统拥有哪些资源。
一种选择是简单地使用许多不同的程序来执行脚本的不同部分:shell、awk、sed、perl 等,以及许多模糊的工具参数,迫使读者不断参考手册页。
即使在 shell 中,您也可以创建不必要的函数和变量,使它们以令人困惑的方式相互依赖。而且,当然,给他们起误导性的名字。
更复杂的是,您可以将二进制数据附加到 shell 的末尾,并让 shell 提取并执行二进制文件。我相信 nVidia 的 Linux 驱动程序和 Sun 的 JDK 都是以这种方式安装的(二进制数据是一个 RPM,由 shell 提取并安装)。我前几天刚下载的另一个例子是soapUI程序。
在这种情况下,可以有一个可以用多种语言编译或解释的文本文件,因此它可以作为 shell 启动,将自身编译为 C 程序并执行结果。该IOCCC有一些例子。