web-dev-qa-db-fra.com

TEMP vs TMP dans les variables d'environnement

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?

screen shot of environment variables

Vous ne savez pas pourquoi les gens veulent voir cela, mais voici les valeurs du chemin: Chemin dans TEMP: C:\Fichiers communs\Fichiers communs\Microsoft partagés\Windows Live; C:\Fichiers programme (x86)\Fichiers communs\Microsoft partagés\Windows Live; C:\Fichiers de programme (x86)\NVIDIA Corporation\PhysX\Commun;% SystemRoot%\system32;% SystemRoot%;% SystemRoot%\System32\Wbem;% SYSTEMROOT%\System32\WindowsPowerShell\v1.0 \; C:\Fichiers de programme (x86)\Fichiers communs\Acronis\SnapAPI \; C:\Fichiers de programme (x86)\Kits Windows\8.1\Outils de performance Windows \; C:\Programmes\Microsoft SQL Server\110\Tools\Binn \; C:\Fichiers de programme (x86)\Windows Live\Shared

Chemin d'accès dans TMP:% USERPROFILE%\AppData\Local\Temp

17
Celeritas

Pour répondre à la question spécifiquement:

Quelle est la différence entre les deux?

Il n'y a pas de différence. Ce ne sont que 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 affecte par défaut les deux chemins au même chemin afin d'assurer la cohérence entre différents programmes et même de se protéger contre les erreurs de développement, telles que leur utilisation dans le même programme.

Notez également que la variable %Path% n'a rien à voir avec %TMP% ou %TEMP%. %Path% est une variable système, alors 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. Autant que je sache, seul l'utilisateur "Système" peut réellement utiliser ces variables, comme en témoigne un simple test; ouvrez une fenêtre de commande et tapez echo %TMP% ou echo %TEMP% pour obtenir le chemin défini dans la version utilisateur des variables. Cependant, étant donné que %Path% n'a pas de version utilisateur (par défaut), vous pouvez faire echo %Path% et il renvoie la valeur de la variable système.

Je ne suis pas tout à fait sûr de savoir comment les programmes utilisent la variable système "Path", ce à quoi cygwin faisait probablement allusion, mais peu importe, 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 sert %Path% - 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 à utiliser le chemin complet du fichier. Par exemple, l'ajout de "C:\myprog\bin" à% Path% vous permettra de taper simplement myprog ou myprog --help etc 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 à tout programme ou interface d’accéder à tout type de fichier sans avoir besoin du chemin complet.

8
RyanayR

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 indiquent 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 j’ai utilisé cela 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 sous DOS car il n'y avait pas de contrôle, les 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

3
Mark