Normalmente, não é o pai que pesquisa $PATH
. Geralmente é o kernel.
Internamente, gerar um novo processo é um fork
(cria um novo processo, mas continua executando o código atual; o pai e o filho geralmente entram em sua própria ramificação if
) seguido por um (substitui a imagem do processo atual por uma nova imagem do processo) com elementos opcionais (como redirecionamentos de arquivadores ou configurações de sinal) entre eles.
Os exec * p
membros da família exec (a família exec está prestes a fazer o mesmo coisa de maneiras diferentes) faça o kernel pesquisar a variável de ambiente $PATH
ao resolver um argumento que não tenha uma barra nele.
Uma vez que o caminho é resolvido, o kernel tenta executá-lo como um binário, recorrendo à linha shebang se o primeiro falhar e o executável tiver uma linha shebang. Se a linha shebang for usada, o interpretador especificado nela será executado e passará pelo caminho resolvido.