Como o Windows decide qual executável será executado?

1

Eu tenho vários lugares no meu computador que têm executáveis, e todos eles são adicionados ao PATH .

Ocasionalmente, há casos em que tenho vários executáveis com o mesmo nome que possuem configurações diferentes ou fazem coisas totalmente diferentes. Por exemplo, eu tenho o comando nativo do Windows FIND , e também tenho a porta do Linux de find para windows. Ambos são muito úteis por si só, mas fazem coisas muito diferentes.

Quando executo FIND da linha de comando; Por padrão, a versão do Windows é executada, a menos que eu esteja no diretório com a versão Unix. Neste caso, isso é principalmente o que eu quero, mas existem situações diferentes. Eu sei que o executável que será executado sempre será o que é gerado quando digito which <executable name> .

Minha pergunta é: como esse executável é escolhido sobre o outro? Por que o Windows escolhe Git localizado em ...\msysgit\bin\git.exe vs aquele localizado em D:\bin\git.exe ? Ambos os locais estão no PATH . É algo tão bobo quanto a ordem das entradas PATH ?

    
por dgo 04.04.2015 / 00:57

1 resposta

5

O Windows primeiro verifica o diretório de trabalho atual, verifica cada caminho na variável PATH da esquerda para a direita e, finalmente, verifica os locais do sistema (por exemplo,% WINDIR%). Isso é quase idêntico ao Linux, exceto que o Linux não verifica "." antes do caminho.

    
por 04.04.2015 / 01:01