TEMP vs TMP dans les variables d'environnement

20

Est-il juste d'avoir ces deux variables d'environnement TEMP et TMP? Si j'apporte des modifications à l'un, dois-je apporter les mêmes modifications à l'autre? Par exemple, j'installais cygwin et les instructions m'ont dit de changer la variable PATH, mais TEMP et TMP ont la variable path. Quelle est la différence entre les deux?

capture d'écran des variables d'environnement

Vous ne savez pas pourquoi les gens veulent voir cela, mais voici les valeurs du chemin: Chemin dans TEMP: C: \ Program Files \ Fichiers communs \ Microsoft Shared \ Windows Live; C: \ Program Files (x86) \ Common Files \ Microsoft Shared \ Windows Live; C: \ Program Files (x86) \ NVIDIA Corporation \ PhysX \ Common;% SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem;% SYSTEMROOT% \ System32 \ WindowsPowerShell \ v1.0 \; C: \ Program Files (x86) \ Common Files \ Acronis \ SnapAPI \; C: \ Program Files (x86) \ Windows Kits \ 8.1 \ Windows Performance Toolkit \; C: \ Program Files \ Microsoft SQL Server \ 110 \ Tools \ Binn \; C: \ Program Files (x86) \ Windows Live \ Shared

Chemin dans TMP:% USERPROFILE% \ AppData \ Local \ Temp

Celeritas
la source
Où est la variable Path dans les temps que je ne peux pas voir dans votre capture d'écran
user151019
@Mark qu'importe?
Celeritas
@DavidMarshall qu'importe?
Celeritas
Ma question n'est pas de savoir comment changer la variable de chemin. Et si c'était vos gars, les réponses seraient fausses parce que mon point est, lorsque vous changez n'importe quelle variable, cela devrait-il être fait en TEMP, TMP ou les deux. Et vous ne spécifiez pas.
Celeritas
3
Consultez cet article Pourquoi existe-t-il des variables d'environnement TMP et TEMP, et laquelle a raison? Selon cela, TMPpourrait être celui à préférer (en raison de la GetTempFileNamefonction) ...
aschipfl

Réponses:

10

Pour répondre spécifiquement à la question:

Quelle est la différence entre les deux?

Il n'y a pas de différence. Ce sont juste des alias différents pour le même chemin. Comme Mark l'a mentionné, certains programmes utilisent %TMP%tandis que d'autres utilisent %TEMP%. Windows attribue les deux au même chemin par défaut pour garantir la cohérence entre les différents programmes et même pour protéger contre les erreurs de développeur telles que l'utilisation des deux dans le même programme.

Notez également que la %Path%variable n'a rien à voir avec %TMP%ou %TEMP%. %Path%est une variable système, tandis que %TMP%et %TEMP%sont à la fois des variables système et des variables utilisateur. Les versions du système sont liées à C:\windows\TEMP. AFAIK, seul l'utilisateur "Système" peut réellement utiliser ces variables, comme en témoigne un simple test; ouvrez une fenêtre cmd et tapez echo %TMP%ou echo %TEMP%, et il retourne le chemin défini dans la version utilisateur des variables. Cependant puisqu'il %Path%n'a pas de version utilisateur (par défaut), vous pouvez le faire echo %Path%et il retourne la valeur de la variable système.

Je ne sais pas exactement comment les programmes utilisent la variable système "Path", ce à quoi cygwin faisait probablement référence, mais quoi qu'il en soit, je peux vous assurer que cela n'a rien à voir avec TMP ou TEMP.

J'espère que cela répond à votre question.

EDIT: Je viens de me rappeler à quoi %Path%sert - il vous permet d'accéder à tous les fichiers qui se trouvent dans l'un des chemins spécifiés dans la variable sans avoir besoin d'utiliser le chemin complet du fichier. Par exemple, ajouter "C: \ myprog \ bin" à% Path% vous permettra de taper simplement myprogou myprog --helpetc dans la ligne de commande sans avoir à taper le chemin complet, comme "C:\myprog\bin\myprog.exe" --help. Bien sûr, l'utilisation de la ligne de commande n'est qu'un exemple, elle permet à n'importe quel programme ou interface d'accéder à n'importe quel type de fichier sans avoir besoin du chemin complet.

RyanayR
la source
Ils sont différents, certains programmes utilisent l'un et certains l'autre, vous avez donc besoin des deux
user151019
Intéressant. Je ne peux pas compresser les répertoires, car je me suis parfois vu refuser l'accès. Changer le TEMP et le TMP pour %USERPROFILE%\AppData\Local\Temprésoudre l'un de mes problèmes, mais en a généré bien d'autres. Je l'ai changé en C:\Windows\Temp. S'il existe une version utilisateur, alors le système peut utiliser C:\Windows\Temp, alors que je peux utiliser %USERPROFILE%\AppData\Local\Tempet tout le monde est content. Je vais essayer. Merci!
inf3rno
3

Vous avez besoin des deux car différents programmes en utilisent différents.

Ils n'ont pas besoin d'être placés au même endroit car seuls les programmes très mal écrits utiliseront les deux en supposant qu'ils pointent vers la même chose.

/ tmp est un répertoire commun pour les fichiers temporaires sous Unix utilisant également la variable d'environnement TMPDIR

De mémoire (quand je l'ai utilisé au milieu des années 80), TEMP était l'original utilisé sous DOS et TMP avait tendance à être utilisé par les programmes portés depuis Unix pour correspondre au / tmp. Cependant, lorsque les programmes étaient écrits en DOS car il n'y avait aucun contrôle, différents développeurs en utilisaient différents. Dans Windows moderne, la valeur par défaut de Microsoft est la même pour les deux, voir ce document

user151019
la source
2
En fait, la variable SUS standard est TMPDIR. La norme ne mentionne ni l'un TMPni l' autre TEMP, tous deux originaires du monde DOS.
JdeBP
@J, SUS a ????
Pacerier
1
Un peu en retard maintenant mais: Spécification UNIX unique.
Tim Diggins