我正在重写这个问题,因为据我所知,它还没有被清楚地理解。我在 C 中实现了自己的 shell,它需要支持原始命令执行的所有命令。
问题是在 C 中执行所有现有的 UNIX bash 命令, 而不使用已经让您轻松执行此操作的函数execvp()
。system()
为此,我需要搜索可能包含任何类型的 UNIX 命令的所有必需目录。我只想知道:
PATH
当我检查环境变量中的所有目录时,我真的确定我支持任何发行版中所有可能的 UNIX 命令吗?(在我的机器中变成/bin/
, /usr/bin/
, )/usr/local/bin
我还找到了一种方法,它可以获取您插入的文件的完整目录,称为realpath()。但不幸的是,(null)
当我尝试获取插入到我自己的 shell 中的命令目录时,它会返回。
你还有什么建议我来解决这个问题?作为最后的解决方案,从根目录递归搜索整个计算机以查找插入的命令是否有意义?
如果有不清楚的地方,请让我知道以澄清。如果您认为从现在开始已经清楚地描述了问题,如果您可以用一段示例代码回答并清除问题中的 [on hold] 标签,我将非常感激。
提前致谢!