什么语言用于构建 Unix 命令?

fro*_*hem 9 command-line source coreutils

我指的是命令的例子是lspwdcd。另外,这些是如何构建的?你有例子吗?

Mat*_*Mat 26

它通常很简单C。命令lspwd来自GNU Coreutils(大多数?)Linux 发行版(可能还有其他一些系统)中的包。你可以在他们的主页上找到代码。

对于coreutils具体而言,你建立他们与通常的步骤:拆封根源后,问题:

./configure --prefix=/some/path
                   # type ./configure --help to get the available options
make
make install       # could require root access depending on the path you used
Run Code Online (Sandbox Code Playgroud)

小心 - 在您的发行版副本上安装类似的基本实用程序是一个坏主意。使用您的系统随附的任何包管理器。不过,您可以安装到不同的前缀(如果您想尝试,将其安装到您的主目录中是个好主意)。

请注意,虽然有一个cd可执行文件,但cd在大多数情况下您将使用的不是单独的可执行文件。它必须是一个 shell 内置(否则它不能改变 shell 的当前目录——这必须由进程本身完成),所以它是用与 shell 相同的语言编写的(通常C也是如此)。

其他例子:

  • OpenSolarispwd源代码。
  • FreeBSD ls

你可以在网上找到更多这些。


sym*_*ean 5

只是在 Mat 的答案中添加更多内容,尽管 Unix 将这些作为独立程序实现,但许多命令也在其中实现bash(以保存它必须生成一个新进程),请参阅bash手册页了解更多详细信息,或查看标签。

bash 也是用C写的

这可能是值得一提的是,这些命令不具有被写在C -事实上,几个小的Linux发行版使用lua的这些和其他的实现。

  • 好吧 bash 或任何其他好的 shell。 (2认同)