TEMP vs TMP en variables de entorno

20

¿Es correcto tener estas dos variables de entorno TEMP y TMP? Si hago cambios en uno, ¿debo hacer los mismos cambios en el otro? Por ejemplo, estaba instalando cygwin y las instrucciones me dijeron que cambiara la variable PATH, pero tanto TEMP como TMP tienen la variable de ruta. ¿Cuál es la diferencia entre los dos?

captura de pantalla de variables de entorno

No estoy seguro de por qué la gente quiere ver esto, pero aquí están los valores de la ruta: Ruta en TEMP: C: \ Archivos de programa \ Archivos comunes \ Microsoft Shared \ Windows Live; C: \ Archivos de programa (x86) \ Archivos comunes \ Microsoft Shared \ Windows Live; C: \ Archivos de programa (x86) \ NVIDIA Corporation \ PhysX \ Common;% SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem;% SYSTEMROOT% \ System32 \ WindowsPowerShell \ v1.0 \; C: \ Archivos de programa (x86) \ Archivos comunes \ Acronis \ SnapAPI \; C: \ Archivos de programa (x86) \ Windows Kits \ 8.1 \ Windows Performance Toolkit \; C: \ Archivos de programa \ Microsoft SQL Server \ 110 \ Tools \ Binn \; C: \ Archivos de programa (x86) \ Windows Live \ Shared

Ruta en TMP:% USERPROFILE% \ AppData \ Local \ Temp

Celeritas
fuente
¿Dónde está la variable Path en las temperaturas no puedo ver en la captura de pantalla
user151019
@ Mark, ¿qué importa?
Celeritas
@DavidMarshall, ¿qué importa?
Celeritas
Mi pregunta no es cómo cambiar la variable de ruta. Y si se tratara de las respuestas de ustedes, sería incorrecto porque mi punto es que, al cambiar cualquier variable, se debe hacer a TEMP, TMP o ambos. Y no especificas.
Celeritas
3
Consulte este artículo ¿Por qué hay variables de entorno TMP y TEMP y cuál es la correcta? De acuerdo con esto, TMPpodría ser el preferido (debido a la GetTempFileNamefunción) ...
aschipfl

Respuestas:

10

Para responder la pregunta específicamente:

¿Cuál es la diferencia entre los dos?

No hay diferencia. Son solo alias diferentes para el mismo camino. Como Mark mencionó, algunos programas usan %TMP%mientras que otros usan %TEMP%. Windows asigna ambos a la misma ruta de forma predeterminada para garantizar la coherencia entre los diferentes programas e incluso protegerse contra errores del desarrollador, como el uso de ambos en el mismo programa.

También tenga en cuenta que la %Path%variable no tiene nada que ver con %TMP%o %TEMP%. %Path%es una variable del sistema, mientras que %TMP%y %TEMP%son ambos variables del sistema, así como variables de usuario. Las versiones del sistema enlazan a C:\windows\TEMP. AFAIK, solo el usuario del "Sistema" puede usar esas variables, como lo demuestra una prueba simple; abre una ventana cmd y escribe echo %TMP%o echo %TEMP%, y devuelve la ruta definida en la versión de usuario de las variables. Sin embargo, dado que %Path%no tiene una versión de usuario (por defecto), puede hacerlo echo %Path%y devuelve el valor de la variable del sistema.

No estoy del todo seguro de cómo los programas usan la variable del sistema "Path", que probablemente es a lo que se refería cygwin, pero de todos modos, puedo asegurarle que no tiene nada que ver con TMP o TEMP.

Espero que responda tu pregunta.

EDITAR: Acabo de recordar para qué %Path%sirve: le permite acceder a cualquier archivo que se encuentre en cualquiera de las rutas especificadas en la variable sin necesidad de usar la ruta completa al archivo. Por ejemplo, agregar "C: \ myprog \ bin" a% Path% le permitirá escribir myprogo myprog --helpetc. en la línea de comandos sin tener que escribir la ruta completa, como "C:\myprog\bin\myprog.exe" --help. Por supuesto, el uso de la línea de comandos es solo un ejemplo, permite que cualquier programa o interfaz acceda a cualquier tipo de archivo sin necesidad de la ruta completa.

RyanayR
fuente
Son diferentes algunos programas usan uno y otros otro, así que hay tanto
user151019
Interesante. No puedo comprimir directorios, porque a veces tengo acceso denegado. Cambiar TEMP y TMP para %USERPROFILE%\AppData\Local\Tempsolucionar uno de mis problemas, pero generó muchos más. Lo cambié de nuevo a C:\Windows\Temp. Si hay una versión de usuario, entonces el sistema puede usar C:\Windows\Temp, mientras que yo puedo usar %USERPROFILE%\AppData\Local\Tempy todos están contentos. Lo probaré. ¡Gracias!
inf3rno
3

Necesitas ambos, ya que diferentes programas usan diferentes.

No es necesario que se configuren en el mismo lugar, ya que solo los programas muy mal escritos usarán ambos, suponiendo que apunten a lo mismo.

/ tmp es un directorio común para archivos temporales en Unix que también usa la variable de entorno TMPDIR

De memoria (cuando usé esto a mediados de los 80) TEMP era el original usado en DOS y TMP solía ser utilizado por programas que fueron portados desde Unix para coincidir con / tmp. Sin embargo, cuando los programas se escribieron en DOS ya que no había control, diferentes desarrolladores usaron diferentes. En Windows moderno, el valor predeterminado de Microsoft es el mismo para ambos. Vea este documento

usuario151019
fuente
2
En realidad, la variable SUS estándar es TMPDIR. La norma tiene ninguna mención de cualquiera TMPo TEMP, ambos de los cuales se originó en el mundo DOS.
JdeBP
@J, SUS es ????
Pacerier
1
Un poco tarde ahora pero: Especificación UNIX única.
Tim Diggins