Czy dobrze jest mieć te dwie zmienne środowiskowe TEMP i TMP? Jeśli wprowadzę zmiany w jednym, czy powinienem wprowadzić te same zmiany w drugim? Na przykład instalowałem cygwin, a wskazówki nakazały mi zmienić zmienną PATH, ale zarówno TEMP, jak i TMP mają zmienną path. Jaka jest różnica między nimi?
Nie wiem, dlaczego ludzie chcą to zobaczyć, ale oto wartości ścieżki: Ścieżka w 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) \ 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
Ścieżka w TMP:% USERPROFILE% \ AppData \ Local \ Temp
źródło
TMP
może być tym, który woli (ze względu naGetTempFileName
funkcję) ...Odpowiedzi:
Aby odpowiedzieć na pytanie konkretnie:
Nie ma różnicy. Są to po prostu różne aliasy dla tej samej ścieżki. Jak wspomniał Mark, niektóre programy używają,
%TMP%
a inne używają%TEMP%
. Windows domyślnie przypisuje obie do tej samej ścieżki, aby zapewnić spójność między różnymi programami, a nawet chronić przed błędami programistów, takimi jak używanie obu w tym samym programie.Należy również pamiętać, że
%Path%
zmienna ma nic wspólnego z tym albo%TMP%
albo%TEMP%
.%Path%
Jest to zmienna systemowa, natomiast%TMP%
i%TEMP%
są obie zmienne systemowe, jak i zmiennych użytkownika. Wersje systemowe prowadzą doC:\windows\TEMP
. AFAIK, tylko użytkownik „Systemu” może faktycznie używać tych zmiennych, o czym świadczy prosty test; otwórz okno cmd i wpiszecho %TMP%
lubecho %TEMP%
, i zwraca ścieżkę zdefiniowaną w wersji użytkownika zmiennych. Ponieważ jednak%Path%
nie ma wersji użytkownika (domyślnie), możesz to zrobićecho %Path%
i zwraca wartość zmiennej systemowej.Nie jestem do końca pewien, w jaki sposób programy wykorzystują zmienną systemową „Path”, co prawdopodobnie dotyczyło cygwina, ale niezależnie od tego, zapewniam cię, że nie ma to nic wspólnego z TMP ani TEMP.
Mam nadzieję, że to odpowiada na twoje pytanie.
EDYCJA: Właśnie sobie przypomniałem, po co
%Path%
- umożliwia dostęp do plików znajdujących się w dowolnej ze ścieżek określonych w zmiennej bez konieczności korzystania z pełnej ścieżki do pliku. Na przykład dodanie „C: \ myprog \ bin” do% Path% pozwoli Ci po prostu wpisaćmyprog
lubmyprog --help
etc w wierszu poleceń bez konieczności wpisywania pełnej ścieżki, np"C:\myprog\bin\myprog.exe" --help
. Oczywiście użycie wiersza polecenia jest tylko przykładem, pozwala każdemu programowi lub interfejsowi uzyskać dostęp do dowolnego rodzaju pliku bez potrzeby podawania pełnej ścieżki.źródło
%USERPROFILE%\AppData\Local\Temp
naprawiłem jeden z moich problemów, ale wygenerowałem wiele innych. Zmieniłem to z powrotem naC:\Windows\Temp
. Jeśli istnieje wersja użytkownika, system może korzystaćC:\Windows\Temp
, podczas gdy ja mogę używać%USERPROFILE%\AppData\Local\Temp
i wszyscy są zadowoleni. Dam temu szansę. Dzięki!Potrzebujesz obu, ponieważ różne programy używają różnych.
Nie muszą być ustawione w tym samym miejscu, ponieważ tylko bardzo źle napisane programy będą korzystać z obu, zakładając, że wskazują na to samo.
/ tmp jest wspólnym katalogiem plików tymczasowych w systemie Unix, również używającym zmiennej środowiskowej TMPDIR
Z pamięci (kiedy używałem tego w połowie lat 80.) TEMP był pierwotnie używany w DOS-ie, a TMP był używany przez programy, które zostały przeniesione z Uniksa, aby pasowały do / tmp. Jednak kiedy programy zostały napisane w DOSie, ponieważ nie było kontroli, różni programiści używali różnych. W nowoczesnym systemie Windows domyślne ustawienia Microsoftu są takie same dla obu patrz ten dokument
źródło
TMPDIR
. W normie nie ma wzmianki o jednymTMP
lubTEMP
obu, które wywodzą się ze świata DOS.