温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Go语言能否取代Linux脚本

发布时间:2021-10-15 10:09:02 来源:亿速云 阅读:234 作者:柒染 栏目:编程语言

Go语言能否取代Linux脚本,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

  在Cloudflare的人们都非常喜欢Go语言。我们在许多内部软件项目以及更大的管道系统中使用它。但是,我们能否进入下一个层次并将其用作我们最喜欢的操作系统Linux的脚本语言呢?.

  简短点的回答:为什么不呢?Go相对容易学习,不冗余并且有一个强大的生态库,这些库可以重复使用避免我们从头开始编写所有代码。它可能带来的一些其他潜在优势:

  咋一看Go脚本貌似很容易实现Unix脚本的shebang(#!...)支持。shebang行)是脚本的第一行,以#!开头,并指定脚本解释器用于执行脚本(例如,#!/bin/bash或#!/usr/bin/envpython),所以无论使用何种编程语言,系统都确切知道如何执行脚本。Go已经使用gorun命令支持.go文件的类似于解释器的调用,所以只需要添加适当的shebang行(#!/usr/bin/envgorun)到任何的.go文件中,设置好文件的可执行状态,然后就可以愉快的玩耍了。

是否还有其他方式支持

  OK,看起来shebang的方法并没有为我们提供全面的解决方案。是否还有其他方式是我们可以使用的?让我们仔细看看Linux内核如何执行二进制文件。当你尝试执行一个二进制/脚本(或任何有可执行位设置的文件)时,你的shell最后只会使用Linuxexecve系统调用,将它传递给二进制文件系统路径,命令行参数和当前定义的环境变量。然后内核负责正确解析文件并用文件中的代码创建一个新进程。我们中的大多数人都知道Linux(和许多其他类Unix操作系统)为其可执行文件使用ELF二进制格式。

Linux内核核心原则

  然而,Linux内核开发的核心原则之一是避免任何子系统的“vendor/formatlock-in”,这是内核的一部分。因此,Linux实现了一个“可插拔”系统,它允许内核支持任何二进制格式-所有你需要做的就是编写一个正确的模块,它可以解析你选择的格式。如果仔细研究内核源代码,你会发现Linux支持更多的二进制格式。例如,最近的4.14Linux内核,我们可以看到它至少支持7种二进制格式(用于各种二进制格式的树内模块通常在其名称中具有binfmt_前缀)。值得注意的是binfmt_script模块,它负责解析上面提到的shebang行并在目标系统上执行脚本(并不是每个人都知道shebang支持实际上是在内核本身而不是在shell或其他守护进程/进程中实现的)。

  但既然我们认为shebang不是Go脚本的最佳选择,似乎我们需要别的东西。令人惊讶的是,Linux内核已经有了一个“其他类型的”二进制支持模块,它有一个贴切的名称binfmt_misc。该模块允许管理员通过定义良好的procfs接口直接从用户空间动态添加对各种可执行格式的支持,并且有详细记录。

关于Go语言能否取代Linux脚本问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI