Como o Linux reconhece qual arquivo executável rodar primeiro se há mais de um?
Veja a documentação das chamadas de sistema execlp(2), execvp(2) e execvpe(2).
Briefly:
>ul> se o argumento especificando o caminho do executável contém uma barra ("/"), basta olhar se existe o executável nomeado nesse caminho absoluto/relativo e usar isso, caso contrário falhar;otherwise (se o argumento não contém barra) scanear cada diretório listado na variável de ambiente PATH até que um arquivo executável nomeado como o especificado seja encontrado.Por exemplo:
- o caminho absoluto /bin/ls (absoluto porque começa com uma barra) indica o arquivo executável ls listado no diretório /bin, e não há nenhuma ambiguidade possível aqui (já que um diretório não pode listar nomes de arquivos duplicados);
- o caminho relativo foo/ls indica o arquivo executável ls no subdiretório foo do diretório atual. Ou está lá ou não está;
- o nome do comando ls é procurado em cada diretório listado na variável de ambiente PATH (diretórios são separados por ponto-e-vírgula), até que um seja encontrado. Note que o diretório atual não é procurado a menos que esteja explicitamente listado no PATH (como um ponto: ".").
>br>br>Um valor típico para PATH poderia ser /sbin;/usr/sbin;/bin;/usr/bin;/usr/local/bin
Nota que o MS-DOS funcionou praticamente da mesma maneira, com a importante exceção de que no caso 3, o diretório atual é procurado primeiro, e depois todos os diretórios listados na variável de ambiente PATH.
Artigos semelhantes
- O Xbox One roda Microsoft Windows ou tem um sistema operacional diferente? É possível rodar um arquivo executável no Xbox One?
- Qual é a extensão de um arquivo executável no Ubuntu?
- Desde o momento em que você abre um arquivo executável, até o momento em que você termina, como funciona uma instalação?
- Eu baixei um arquivo executável no andróide e o transferi para o pc. Não funciona, porquê?