¿Dónde busca el kernel de Linux los ejecutables?

Primero algunos antecedentes. Recientemente instalé un software (TeX live en realidad), y el instalador colocó los binarios en una ubicación no estándar (/usr/local/texlive/2011/bin/x86_64-linux). No hay problema, porque puedo cambiar $PATH para incluir este directorio. Sin embargo, uso látex dentro de Makefiles y Make dijo que no podía encontrar 'látex'. Eventualmente me di cuenta de que Make le pide al kernel que ejecute latex de forma independiente al shell. Por lo tanto, moví todos mis ejecutables de látex a /usr/local/bin y todo funciona, presumiblemente porque el kernel ahora puede ver los ejecutables.

Si esto es correcto, mi pregunta es: ¿dónde busca el kernel los ejecutables cuando se le pide que ejecute un programa cuando este es independiente de un shell?

preguntado el 12 de junio de 12 a las 15:06

1 Respuestas

El kernel no busca ejecutables; siempre se le indica la ruta (absoluta o relativa). Todas las ejecuciones de programas (creo) básicamente se reducen a llamar al execve () función, a la que se le debe indicar la ruta del ejecutable.

Cuando llama a programas usando solo sus nombres, depende de lo que esté interpretando sus comandos (shell, make) para localizar el programa. Alternativamente, funciones de biblioteca como execlp () se pueden usar, que hacen la resolución de la ruta por sí mismos (ver "Semántica especial").

Respondido el 12 de junio de 12 a las 15:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.