gpt4 book ai didi

linux - 如何实现一个新的shell命令?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:34:51 29 4
gpt4 key购买 nike

我想实现我自己的 ps 命令版本,并且我想了解 Linux 中 shell 命令是如何实现的。它是 Shell 应用程序的一部分还是模块的一部分?

据我所知,当我在 shell 提示符下键入 ps 时:ps 的实际实现只能驻留在内核中,而 shell 只会调用内核 api/二进制文件。

现在,如果我想添加一个新命令(比如 myps):我应该在 shell 应用程序中修改什么? & 我应该在内核模块中修改什么?

shell 应用程序如何知道各个模块(内核、网络、fs 等)中支持的命令列表?

最后,如果(仅作为示例)网络模块仅针对 ipv4 配置和构建,那么在 shell 中支持 ipv6 命令就没有意义了吗?这是如何处理的?

最佳答案

ps 只是一个常规程序(通常位于/bin/ps)。您可以通过运行 which ps 找到它在系统中的位置。

当您运行命令时(假设它不是由 shell 本身实现的内置函数、别名等),shell 会搜索您的 PATH 环境变量中列出的目录。如果您使用 sh 或 bash 作为您的 shell,您可以通过运行 echo $PATH 来查看它。 Shell 按照目录在 PATH 中列出的顺序搜索目录,并运行它找到的第一个匹配程序。

如果您想创建一个新版本的 ps,只需编写一个程序并将其放在您的 PATH 中的一个目录中。通常在 /usr/local/bin/(所有用户都可以访问)或 ~/bin(在您的主目录中)之类的地方。或者您可以将新目录添加到您的 PATH。谢天谢地,无需扰乱内核或 shell 本身。

关于linux - 如何实现一个新的shell命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37382739/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com