这已经是树桩了。我用 C 语言编写了一个 shell 程序,允许用户执行多个命令。根据我目前的研究,“ls”和“cat”等所有命令都位于“/bin/”中。
“wc”未列在此目录 - “/bin”中。如果我启动一个终端,我可以输入“wc fileName”并且它可以工作。我从“/”目录运行“find .wc”,但仍然找不到“wc”命令。
有谁知道“wc”藏在哪里?
尝试which wc
在你的 shell 中输入......这应该会告诉你它在哪里。
在我的机器上,它位于/bin/
.
但是,如果您只想自己完成路径解析,则可以使用该system()
功能(man 3 system
有关更多信息,请参阅 )。正如您在文档中所读到的,这与为路径解析调用 Bourne shell(或符号链接指向的任何地方)实际上是相同的,所以如果您不想要这种开销,您将要坚持使用任何方法您当前正在使用。
我试过whereis wc
了,我把它放进去/usr/bin/wc
如果您不想担心各个实用程序在哪里,但确实想避免调用所涉及的开销system
,那么您应该尝试中间级函数execvp
,或者它的朋友之一(也在该页面上列出)。可悲的是,没有execvpe
.
您可以尝试whence
, which
, 或whereis
在您的 exec 路径中查找任何程序,具体取决于您使用的 shell。
诸如此类的实用程序wc
通常位于/bin
或或/usr/bin
之类的地方。/usr/local/bin
/usr/site/bin