TEMP vs TMP em variáveis de ambiente

16

É 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 TEMP e TMP têm a variável path. Qual é a diferença entre os dois?

Não sei por que as pessoas querem ver isso, mas aqui estão 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% \ System32 \ WindowsPowerShell \ v1.0 \; C: \ Arquivos de Programas (x86) \ Arquivos Comuns \ Acronis \ SnapAPI \ ; C: \ Arquivos de Programas (x86) \ Windows Kits \ 8.1 \ Kit de Ferramentas de Desempenho do Windows \; C: \ Arquivos de Programas \ Microsoft SQL Server \ 110 \ Ferramentas \ Binn \; C: \ Arquivos de Programas (x86) \ Windows Live \ Shared

Caminho no TMP:% USERPROFILE% \ AppData \ Local \ Temp

    
por Celeritas 01.02.2014 / 10:53

2 respostas

8

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.

    
por 02.02.2014 / 05:47
2

Você precisa de ambos, pois programas diferentes usam programas diferentes.

Eles não precisam ser configurados no mesmo local, pois somente programas muito mal escritos usarão ambos, assumindo que apontam para a mesma coisa.

/ tmp é um diretório comum para arquivos temporários no Unix que também usa a variável de ambiente TMPDIR

Da memória (quando eu usei isso em meados dos anos 80) TEMP era o original usado no DOS e o TMP tendia a ser usado por programas que eram portados do Unix para combinar com o / tmp. No entanto, quando os programas foram escritos em DOS, como não havia controle, diferentes desenvolvedores usaram diferentes. No Windows moderno, o padrão da Microsoft é o mesmo para ambos. Consulte este doc

    
por 01.02.2014 / 12:32