Linux内核在哪里寻找可执行文件

时间:2012-06-12 14:05:25

标签: path kernel

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

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

1 个答案:

答案 0 :(得分:3)

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

当你使用他们的名字调用程序时,它取决于解释你的命令(shell,make)来定位程序。或者,可以使用诸如execlp()之类的库函数,它们自己进行路径解析(参见“特殊语义”)。