这是可能的,但你不想这样做.
在支持将脚本编译为独立可执行文件的地方,可以通过将解释器的副本放入可执行文件来完成.因此,这比单独的脚本大得多.
遗憾的是,bash使用的执行模型本身很慢:几乎所有功能都是由外部命令提供的; 和简单命令的参数,甚至它们的名称,都可以通过扩展操作的结果进行修改.这种动态性使得无法有效地编译性能.(zsh支持预编译过程,但好处有限,主要是解析自身的过程).
就拿shc,例如:它的字面通过脚本的原始源作为命令行参数.因此,只需通过读取/proc或使用命令行参数即可读取该源strace.
正如他们所说,"默默无闻的安全根本就没有安全性" - 任何能够合理胜任的人都可以通过这种方式轻率提取任何密码或其他内容.
就在这里。这是一个名为“shc”(Shell Compiler )的小项目。您可以在他们的Github 存储库上找到更多信息
我知道我大约 2 年前使用过它,效果很好。