É correto ter essas duas variáveis de ambiente TEMP e TMP? Se eu fizer alterações em uma, devo fazer as mesmas alterações na outra? Por exemplo, eu estava instalando o cygwin e as instruções me disseram para alterar a variável PATH, mas tanto o TEMP quanto o TMP têm a variável do caminho. Qual é a diferença entre os dois?
Não sei por que as pessoas querem ver isso, mas eis os valores para o caminho: Caminho em TEMP: C: \ Arquivos de Programas \ Arquivos Comuns \ Microsoft Shared \ Windows Live; C: \ Arquivos de Programas (x86) \ Arquivos Comuns \ Microsoft Shared \ Windows Live; C: \ Arquivos de programas (x86) \ NVIDIA Corporation \ PhysX \ Common;% SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem;% SYSTEMROOT% \ System32 \ WindowsPowerShell \ v1.0 \; C: \ Arquivos de programas (x86) \ Arquivos comuns \ Acronis \ SnapAPI \; C: \ Arquivos de programas (x86) \ Windows Kits \ 8.1 \ Windows Performance Toolkit \; C: \ Arquivos de programas \ Microsoft SQL Server \ 110 \ Tools \ Início \; C: \ Arquivos de Programas (x86) \ Windows Live \ Shared
Caminho no TMP:% USERPROFILE% \ AppData \ Local \ Temp
fonte
TMP
pode ser o único a preferir (devido àGetTempFileName
função) ...Respostas:
Para responder à pergunta especificamente:
Não há diferença. Eles são apenas aliases diferentes para o mesmo caminho. Como Mark mencionou, alguns programas usam
%TMP%
enquanto outros usam%TEMP%
. Por padrão, o Windows atribui os dois ao mesmo caminho para garantir a consistência entre diferentes programas e até proteger contra erros de desenvolvedor, como usar os dois no mesmo programa.Observe também que a
%Path%
variável não tem nada a ver com%TMP%
ou%TEMP%
.%Path%
é uma variável do sistema, while%TMP%
e%TEMP%
são variáveis do sistema e variáveis do usuário. As versões do sistema estão vinculadas aC:\windows\TEMP
. AFAIK, apenas o usuário "Sistema" pode realmente usar essas variáveis, como evidenciado por um teste simples; abra uma janela do cmd e digiteecho %TMP%
orecho %TEMP%
, e ele retornará o caminho definido na versão do usuário das variáveis. No entanto, como%Path%
não possui versão do usuário (por padrão), é possível fazerecho %Path%
e ele retorna o valor da variável do sistema.Não sei ao certo como os programas usam a variável de sistema "Path", que é provavelmente a que cygwin estava se referindo, mas, independentemente disso, posso garantir que não tem nada a ver com TMP ou TEMP.
Espero que responda sua pergunta.
EDIT: Acabei de me lembrar para que
%Path%
serve - ele permite acessar qualquer arquivo que esteja 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á digitarmyprog
oumyprog --help
etc na linha de comando sem precisar digitar o caminho completo, como"C:\myprog\bin\myprog.exe" --help
. É claro que o uso da linha de comando é apenas um exemplo, pois permite que qualquer programa ou interface acesse qualquer tipo de arquivo sem precisar do caminho completo.fonte
%USERPROFILE%\AppData\Local\Temp
corrigir um dos meus problemas, mas gerou muitos outros. Eu mudei de volta paraC:\Windows\Temp
. Se houver uma versão do usuário, o sistema poderá usarC:\Windows\Temp
, enquanto eu posso usar%USERPROFILE%\AppData\Local\Temp
e todos ficarão felizes. Vou dar uma chance. Obrigado!Você precisa de ambos, pois programas diferentes usam programas diferentes.
Eles não precisam ser configurados no mesmo local, pois somente os programas gravados com muito mal usarão os dois, desde que apontem para a mesma coisa.
/ tmp é um diretório comum para arquivos temporários no Unix, também usando a variável de ambiente TMPDIR
Da memória (quando eu usei isso em meados dos anos 80), o TEMP era o original usado no DOS e o TMP tendia a ser usado por programas que eram portados no Unix para corresponder ao / tmp. No entanto, quando os programas foram escritos no DOS, como não havia controle, desenvolvedores diferentes usavam programas diferentes. No padrão do Windows moderno Microsoft é o mesmo tanto para ver este doc
fonte
TMPDIR
. O padrão tem nenhuma menção de qualquer umTMP
ouTEMP
ambos de que se originou no mundo DOS.