TEMP vs TMP nelle variabili di ambiente


20

È giusto avere queste due variabili d'ambiente TEMP e TMP? Se apporto modifiche a una, dovrei apportare le stesse modifiche all'altra? Ad esempio stavo installando cygwin e le istruzioni mi dicevano di cambiare la variabile PATH, ma sia TEMP che TMP hanno la variabile path. Qual è la differenza tra i due?

schermata delle variabili d'ambiente

Non sono sicuro del motivo per cui la gente vuole vederlo, ma ecco i valori del percorso: Percorso in TEMP: C: \ Programmi \ File comuni \ Microsoft Shared \ Windows Live; C: \ Programmi (x86) \ Common Files \ Microsoft Shared \ Windows Live; C: \ Programmi (x86) \ NVIDIA Corporation \ PhysX \ Common;% SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem;% SYSTEMROOT% \ System32 \ WindowsPowerShell \ v1.0 \; C: \ Programmi (x86) \ File comuni \ Acronis \ SnapAPI \; C: \ Programmi (x86) \ Windows Kits \ 8.1 \ Windows Performance Toolkit \; C: \ Programmi \ Microsoft SQL Server \ 110 \ Tools \ Binn \; C: \ Programmi (x86) \ Windows Live \ Shared

Percorso in TMP:% USERPROFILE% \ AppData \ Local \ Temp


Dov'è la variabile Path nelle
temp

@Mark che importa?
Celeritas,

@DavidMarshall che importa?
Celeritas,

La mia domanda non è come modificare la variabile path. E se fosse la risposta dei vostri ragazzi sarebbe sbagliata perché il mio punto è, quando si cambia qualsiasi variabile dovrebbe essere fatto su TEMP, TMP o entrambi. E non specifichi.
Celeritas,

3
Dai un'occhiata a questo articolo Perché ci sono entrambe le variabili di ambiente TMP e TEMP, e quale è quella giusta? Secondo questo, TMPpotrebbe essere quello da preferire (a causa della GetTempFileNamefunzione) ...
aschipfl

Risposte:


10

Per rispondere specificamente alla domanda:

Qual è la differenza tra i due?

Non c'è differenza. Sono solo alias diversi per lo stesso percorso. Come menzionato Mark, alcuni programmi usano %TMP%mentre altri usano %TEMP%. Windows assegna entrambi allo stesso percorso per impostazione predefinita per garantire la coerenza tra programmi diversi e persino proteggere da errori degli sviluppatori come l'utilizzo di entrambi nello stesso programma.

Si noti inoltre che la %Path%variabile non ha nulla a che fare con %TMP%o %TEMP%. %Path%è una variabile di sistema, mentre %TMP%e %TEMP%sono sia variabili di sistema che variabili utente. Le versioni del sistema sono collegate a C:\windows\TEMP. AFAIK, solo l'utente "Sistema" può effettivamente utilizzare quelle variabili, come evidenziato da un semplice test; aprire una finestra cmd e digitare echo %TMP%o echo %TEMP%, e restituisce il percorso definito nella versione utente delle variabili. Tuttavia poiché %Path%non ha una versione dell'utente (per impostazione predefinita), puoi farloecho %Path% e restituisce il valore della variabile di sistema.

Non sono del tutto sicuro di come i programmi utilizzino la variabile di sistema "Path", che è probabilmente ciò a cui si riferiva cygwin, ma a prescindere, posso assicurarti che non ha nulla a che fare con TMP o TEMP.

Spero che risponda alla tua domanda.

EDIT: ho appena ricordato a cosa %Path%serve: ti consente di accedere a tutti i file che si trovano in uno dei percorsi specificati nella variabile senza dover utilizzare il percorso completo del file. Ad esempio, l'aggiunta di "C: \ myprog \ bin" a% Path% ti consentirà di digitare myprogo myprog --helpecc. Nella riga di comando senza dover digitare il percorso completo, ad esempio "C:\myprog\bin\myprog.exe" --help. Naturalmente l'uso della riga di comando è solo un esempio, consente a qualsiasi programma o interfaccia di accedere a qualsiasi tipo di file senza bisogno del percorso completo.


Sono diversi, alcuni programmi usano l'uno e l'altro, quindi sono necessari entrambi
user151019,

Interessante. Non riesco a comprimere le directory, perché a volte mi è stato negato l'accesso. La modifica di TEMP e TMP per %USERPROFILE%\AppData\Local\Temprisolvere uno dei miei problemi, ma ne ha generati molti altri. L'ho cambiato di nuovo in C:\Windows\Temp. Se esiste una versione utente, il sistema può usare C:\Windows\Temp, mentre io posso usare %USERPROFILE%\AppData\Local\Tempe tutti sono felici. Lo proverò. Grazie!
inf3rno,

3

Sono necessari entrambi poiché programmi diversi usano programmi diversi.

Non devono essere impostati nello stesso posto poiché solo i programmi scritti molto male useranno entrambi supponendo che puntino alla stessa cosa.

/ tmp è una directory comune per i file temporanei in Unix che utilizza anche la variabile di ambiente TMPDIR

Dalla memoria (quando l'ho usato a metà degli anni '80) TEMP era quello originale usato in DOS e TMP tendeva ad essere usato da programmi portati da Unix per corrispondere a / tmp. Tuttavia, quando i programmi venivano scritti in DOS in quanto non vi era alcun controllo, diversi sviluppatori ne usavano di diversi. Nella moderna Windows, l'impostazione predefinita di Microsoft è la stessa per entrambi vedere questo documento


2
In realtà, la variabile SUS standard è TMPDIR. La norma non ha alcuna menzione di uno TMPo TEMP, entrambi i quali ha avuto origine nel mondo DOS.
JdeBP,

@J, SUS è ????
Pacerier,

1
Ora un po 'tardi ma: specifica UNIX singola.
Tim Diggins,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.