TEMP vs TMP em variáveis ​​de ambiente


18

É 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?

captura de tela de variáveis ​​de ambiente

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


Onde é a variável Path nos temps eu não posso vê-lo em sua tela tiro
Mark

@ Mark, o que isso importa?
Celeritas 02/02

@DavidMarshall o que isso importa?
Celeritas 03/02

Minha pergunta não é como alterar a variável de caminho. E se as respostas de vocês estivessem erradas, o que quero dizer é que, ao alterar qualquer variável, isso deve ser feito para TEMP, TMP ou ambos. E você não especifica.
Celeritas 03/02/2014

3
Confira este artigo Por que existem variáveis ​​de ambiente TMP e TEMP e qual é a correta? De acordo com isto, TMPpode ser o único a preferir (devido à GetTempFileNamefunção) ...
aschipfl

Respostas:


9

Para responder à pergunta especificamente:

Qual é a diferença entre os dois?

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 a C:\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 digite echo %TMP%or echo %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 fazer echo %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á digitar myprogou myprog --helpetc 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.


Eles são diferentes de alguns programas usar um e alguns outra forma que não precisam tanto
Mark

Interessante. Não consigo compactar diretórios, porque às vezes tenho acesso negado. Alterar o TEMP e o TMP para %USERPROFILE%\AppData\Local\Tempcorrigir um dos meus problemas, mas gerou muitos outros. Eu mudei de volta para C:\Windows\Temp. Se houver uma versão do usuário, o sistema poderá usar C:\Windows\Temp, enquanto eu posso usar %USERPROFILE%\AppData\Local\Tempe todos ficarão felizes. Vou dar uma chance. Obrigado!
Inf3rno

3

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


2
Na verdade, a variável padrão do SUS é TMPDIR. O padrão tem nenhuma menção de qualquer um TMPou TEMPambos de que se originou no mundo DOS.
JdeBP

@J, o SUS é ????
Pacerier 29/07

1
Pouco tarde agora, mas: Especificação UNIX única.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.