Para responder especificamente à pergunta:
What is the difference between the two?
Não há diferença. Eles são apenas diferentes aliases para o mesmo caminho. Como Mark mencionou, alguns programas usam %TMP%
enquanto outros usam %TEMP%
. O Windows atribui ambos ao mesmo caminho por padrão para garantir a consistência entre diferentes programas e até mesmo proteger contra erros do desenvolvedor, como usar os dois no mesmo programa.
Observe também que a variável %Path%
não tem nada a ver com %TMP%
ou %TEMP%
. %Path%
é uma variável do sistema, enquanto %TMP%
e %TEMP%
são variáveis do sistema e variáveis do usuário. As versões do sistema estão vinculadas a C:\windows\TEMP
. AFAIK, apenas o usuário "System" pode realmente usar essas variáveis, como evidenciado por um teste simples; abra uma janela cmd e digite echo %TMP%
ou echo %TEMP%
e retorne o caminho definido na versão do usuário das variáveis. No entanto, como %Path%
não possui uma versão de usuário (por padrão), você pode fazer echo %Path%
e retornar o valor da variável de sistema.
Não tenho certeza absoluta de como os programas usam a variável de sistema "Path", que é provavelmente o que o cygwin estava se referindo, mas, independentemente disso, posso garantir que não tem nada a ver com TMP ou TEMP.
Espero que isso responda à sua pergunta.
EDIT: Acabei de lembrar o que é %Path%
- ele permite que você acesse todos os arquivos que estão em qualquer um dos caminhos especificados na variável sem precisar usar o caminho completo para o arquivo. Por exemplo, adicionar "C: \ myprog \ bin" a% Path% permitirá que você simplesmente digite myprog
ou myprog --help
etc na linha de comando sem ter que digitar o caminho completo, como "C:\myprog\bin\myprog.exe" --help
. É claro que o uso de linha de comando é apenas um exemplo, ele permite que qualquer programa ou interface acesse qualquer tipo de arquivo sem precisar do caminho completo.