TEMP vs TMP dalam Variabel Lingkungan


20

Apakah benar memiliki dua variabel lingkungan ini TEMP dan TMP? Jika saya membuat perubahan pada satu, apakah saya harus membuat perubahan yang sama ke yang lain? Sebagai contoh saya sedang menginstal cygwin dan petunjuknya menyuruh saya untuk mengubah variabel PATH, tetapi TEMP dan TMP memiliki variabel path. Apa perbedaan keduanya?

tangkapan layar variabel lingkungan

Tidak yakin mengapa orang ingin melihat ini, tetapi inilah nilainya untuk jalur: Jalur di TEMP: C: \ Program Files \ Common Files \ 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) \ File Umum \ 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

Path di TMP:% USERPROFILE% \ AppData \ Local \ Temp


Di mana variabel Path di temps saya tidak bisa melihatnya di screen shot Anda
user151019

@Mark apa bedanya?
Celeritas

@ Davidvid Hall apa bedanya?
Celeritas

Pertanyaan saya bukan bagaimana mengubah variabel path. Dan jika itu jawaban kalian akan salah karena maksud saya adalah, ketika mengubah variabel apa pun harus dilakukan untuk TEMP, TMP atau keduanya. Dan Anda tidak menentukan.
Celeritas

3
Lihat artikel ini Mengapa ada variabel lingkungan TMP dan TEMP, dan mana yang benar? Menurut ini, TMPmungkin orang yang memilih (karena GetTempFileNamefungsi) ...
aschipfl

Jawaban:


10

Untuk menjawab pertanyaan secara khusus:

Apa perbedaan keduanya?

Tidak ada perbedaan. Mereka hanya alias berbeda untuk jalur yang sama. Seperti yang disebutkan Mark, beberapa program digunakan %TMP%sementara yang lain digunakan %TEMP%. Windows menetapkan keduanya ke jalur yang sama secara default untuk memastikan konsistensi antara program yang berbeda, dan bahkan melindungi terhadap kesalahan pengembang seperti menggunakan keduanya di program yang sama.

Perhatikan juga bahwa %Path%variabel tidak ada hubungannya dengan salah satu %TMP%atau %TEMP%. %Path%adalah variabel sistem, sementara %TMP%dan %TEMP%keduanya adalah variabel sistem serta variabel pengguna. Tautan versi sistem ke C:\windows\TEMP. AFAIK, hanya pengguna "Sistem" yang benar-benar dapat menggunakan variabel-variabel tersebut, sebagaimana dibuktikan oleh tes sederhana; buka jendela cmd dan ketik echo %TMP%atau echo %TEMP%, dan itu akan mengembalikan path yang didefinisikan dalam versi pengguna dari variabel. Namun karena %Path%tidak memiliki versi pengguna (secara default), Anda dapat melakukannya echo %Path%dan mengembalikan nilai variabel sistem.

Saya tidak sepenuhnya yakin bagaimana program menggunakan variabel sistem "Path", yang kemungkinan merujuk pada cygwin, tetapi terlepas dari itu, saya dapat meyakinkan Anda bahwa itu tidak ada hubungannya dengan TMP atau TEMP.

Semoga itu menjawab pertanyaan Anda.

EDIT: Saya baru ingat untuk apa %Path%- ini memungkinkan Anda mengakses file apa saja yang ada di jalur mana pun yang ditentukan dalam variabel tanpa perlu menggunakan path lengkap ke file tersebut. Sebagai contoh, menambahkan "C: \ myprog \ bin" ke% Path% akan membiarkan Anda cukup ketik myprogatau myprog --helplain - lain ke dalam command-line tanpa harus mengetikkan path lengkap, seperti "C:\myprog\bin\myprog.exe" --help. Tentu saja penggunaan baris perintah hanyalah sebuah contoh, ini memungkinkan program atau antarmuka apa pun mengakses file jenis apa pun tanpa memerlukan path lengkap.


Mereka berbeda beberapa program menggunakan satu dan beberapa yang lain sehingga Anda benar-benar membutuhkan keduanya
user151019

Menarik. Saya tidak dapat mengompres direktori, karena saya terkadang mendapat akses ditolak. Mengubah TEMP dan TMP untuk %USERPROFILE%\AppData\Local\Tempmemperbaiki salah satu masalah saya, tetapi menghasilkan lebih banyak. Saya mengubahnya kembali ke C:\Windows\Temp. Jika ada versi pengguna, maka sistem dapat digunakan C:\Windows\Temp, sementara saya bisa menggunakan %USERPROFILE%\AppData\Local\Tempdan semua orang senang. Saya akan mencobanya. Terima kasih!
inf3rno

3

Anda memang membutuhkan keduanya karena program yang berbeda menggunakan yang berbeda.

Mereka tidak perlu diatur ke tempat yang sama karena hanya program yang ditulis sangat buruk akan menggunakan keduanya dengan asumsi mereka menunjuk ke hal yang sama.

/ tmp adalah direktori umum untuk file sementara di Unix juga menggunakan variabel lingkungan TMPDIR

Dari memori (ketika saya menggunakan ini di pertengahan 80-an) TEMP adalah yang asli yang digunakan dalam DOS dan TMP cenderung digunakan oleh program-program yang porting dari Unix agar sesuai dengan / tmp. Namun ketika program ditulis dalam DOS karena tidak ada kontrol, pengembang yang berbeda menggunakan yang berbeda. Di Windows modern, standar Microsoft adalah sama untuk keduanya, lihat dokumen ini


2
Sebenarnya, variabel SUS standar TMPDIR. Standar tidak menyebutkan salah satu TMPatau TEMPkeduanya yang berasal dari dunia DOS.
JdeBP

@ J, SUS adalah ????
Pacerier

1
Agak terlambat sekarang tetapi: Spesifikasi UNIX Tunggal.
Tim Diggins
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.