Por que alguns programas precisam de um valor de Caminho e outros não no Windows?

6

Por que quando eu instalo Composer no Windows 7/8/10, ou alguns programas adaptados ao UNIX como GNU Tar , eu preciso definir o valor do caminho, e se eu não, eles não serão utilizáveis por outros programas?

    
por JohnDoea 25.12.2015 / 10:59

3 respostas

3

Eu respondi isso para o Microsoft Windows. Eu vejo que há também uma tag do Linux aqui. Bem, os mesmos conceitos se aplicam. (Notas adicionais do Linux são mencionadas no último parágrafo).

Você pode usar programas se eles não estiverem em um diretório especificado pela variável de ambiente PATH. No entanto, é um pouco menos conveniente.

Por exemplo, frequentemente executo o 7-Zip mesmo que não esteja no caminho. Então, em vez de iniciar a linha de comando com "7z", eu faço a linha de comando começar com:% "C:\Program Files-Zipz.exe"

Isso não é tão ruim quanto parece, porque o que eu realmente digito geralmente é algo mais parecido com: C: \ separador Pro separador 7 separador 7 separador

(Eu ouço bipes que podem acontecer se houver erros de digitação, e após minha expansão final com a tecla tab , eu também verifico a precisão da linha de comando, para ter certeza de que ela executa o que eu queria para.)

Um programa pode verificar como você se referiu ao programa na linha de comando e pode verificar seu diretório atual. Assim, um programa poderia agir de forma diferente com base em se está no PATH. No entanto, isso é improvável.

Uma solução alternativa: ajuste a variável de ambiente PATH para incluir também o diretório onde o programa está instalado.

Outra solução alternativa: basta colocar o arquivo executável em um diretório que já esteja no PATH. (No entanto, alguns programas são mais complicados, porque eles também podem precisar de outros arquivos, como arquivos DLL, copiados em tal diretório; portanto, essa abordagem geralmente não é recomendada para programas que você precisa "instalar", executando uma "instalação programa ". No entanto, para executáveis simples que podem ser executados sem a necessidade de um monte de arquivos de suporte, isso geralmente é viável.)

No Linux, existem algumas pequenas diferenças: você usaria apenas " echo ${PATH} " em vez de " echo %PATH% ", use barras normais em vez de barras invertidas, use 7za para 7-Zip em vez de 7z.exe . Se você deseja ajustar o caminho, você pode usar um comando diferente, como export , mas realmente dependendo de qual shell você usa.

    
por 25.12.2015 / 14:48
2

Why some programs need a Path value, and some others don't in Windows?

Why When I install Composer on Windows 7/8/10, or some UNIX-suited programs like GNU Tar, I need to set their Path value, and if I don't, it won't be usable by other programs?

O PATH é uma variável de ambiente em sistemas operacionais do tipo Unix, DOS, OS / 2 e Microsoft Windows, especificando um conjunto de diretórios nos quais os programas executáveis estão localizados. Em geral, cada processo ou sessão de usuário em execução possui sua própria configuração de PATH.

DOS, OS / 2 e Windows

Alguns programas podem adicionar seu diretório à frente do conteúdo da variável PATH durante a instalação, para acelerar o processo de pesquisa e / ou substituir os comandos do SO. Na era do DOS, era costume adicionar uma linha PATH {program directory};%PATH% ou SET PATH={program directory};%PATH% a AUTOEXEC.BAT .

Quando um comando é inserido em um shell de comando ou uma chamada de sistema é feita por um programa para executar um programa, o sistema primeiro procura o diretório de trabalho atual e pesquisa o caminho, examinando cada diretório da esquerda para a direita, procurando um nome de arquivo executável que corresponde ao nome do comando fornecido. Os programas executáveis têm extensões de nome de arquivo de EXE ou COM , e os scripts em lote têm extensões de BAT ou CMD . Outras extensões de nome de arquivo executáveis também podem ser registradas no sistema.

Unix e Unix-like

Quando um nome de comando é especificado pelo usuário ou uma chamada exec é feita a partir de um programa, o sistema pesquisa $PATH , examinando cada diretório da esquerda para a direita na lista, procurando um nome de arquivo que corresponda ao nome do comando . Uma vez encontrado, o programa é executado como um processo filho do shell de comando ou programa que emitiu o comando.

Fonte: PATH_ (variável)

    
por 25.12.2015 / 15:52
1

No Windows, um aplicativo pode registrar seu caminho em {HKCU|HKLM}\Software\Microsoft\Windows\CurrentVersion\App Paths no registro. O Windows então lembrará onde encontrar o respectivo arquivo .exe, sem inchar a variável de ambiente PATH .

Em Registro de aplicativos :

An application that is installed for per user can be registered under HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths. An application that is installed for all users of the computer can be registered under HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths.

The entries found under App Paths are used primarily for the following purposes:

  • To map an application's executable file name to that file's fully qualified path.
  • To pre-pend information to the PATH environment variable on a per-application, per-process basis.

Por exemplo, uma instalação padrão do Windows tem a entrada de registro:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WORDPAD.EXE
(Default)="%ProgramFiles%\Windows NT\Accessories\WORDPAD.EXE"

Isso permite que o WordPad seja iniciado a partir de Iniciar / Executar digitando apenas wordpad (ou start wordpad em um prompt cmd), mesmo que %ProgramFiles%\Windows NT\Accessories não esteja no PATH.

    
por 25.12.2015 / 18:57