如何实现新的shell命令?

时间:2016-05-23 04:37:36

标签: linux shell

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

根据我的理解,当我在shell提示符下输入ps时:ps的实际实现只能驻留在kernel& shell只调用内核api / binary。

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

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

最后,如果(仅举例)网络模块已配置&仅针对ipv4构建,然后在shell中支持ipv6命令没有意义吗?这是如何照顾的?

1 个答案:

答案 0 :(得分:4)

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

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

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

相关问题