如何实现新的外壳命令



我想实现我自己的ps命令版本,我试图理解shell命令是如何在Linux中实现的。它是命令行管理程序应用程序的一部分还是模块的一部分?

在我的理解中,当我在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 本身。

相关内容

  • 没有找到相关文章

最新更新