1

首先是一些背景。我最近安装了一些软件(实际上是 TeX live),并且二进制文件由安装程序放置在非标准位置(/usr/local/texlive/2011/bin/x86_64-linux)。没问题,因为我可以更改 $PATH 以包含此目录。但是,我在 Makefiles 中使用了乳胶,Make 说它找不到“乳胶”。我最终意识到 Make 要求内核以独立于 shell 的方式运行乳胶。因此,我将所有乳胶可执行文件移动到 /usr/local/bin 并且一切正常,大概是因为内核现在可以看到可执行文件。

如果这是正确的,我的问题是:当被要求运行一个独立于 shell 的程序时,内核在哪里寻找可执行文件?

4

1 回答 1

3

内核不寻找可执行文件——它总是被告知(绝对或相对)路径。所有程序执行(我相信)基本上都归结为调用execve()函数,需要告知可执行文件的路径。

当您仅使用名称调用程序时,取决于解释您的命令(shell、make)的任何内容来定位程序。或者,可以使用诸如execlp()之类的库函数,它们自己进行路径解析(请参阅“特殊语义”)。

于 2012-06-12T14:24:48.557 回答