TEMP vs TMP w zmiennych środowiskowych


20

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?

zrzut ekranu zmiennych środowiskowych

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


Gdzie jest zmienna Path w temps Nie widzę jej na
zrzucie

@ Zaznacz, co to ma znaczenie?
Celeritas

@DavidMarshall co to ma znaczenie?
Celeritas

Moje pytanie nie dotyczy sposobu zmiany zmiennej ścieżki. A gdyby tak było, to odpowiedzi byłyby błędne, ponieważ mam na myśli to, że przy zmianie jakiejkolwiek zmiennej należy to zrobić na TEMP, TMP lub oba. I nie określasz.
Celeritas

3
Sprawdź ten artykuł Dlaczego istnieją zmienne środowiskowe TMP i TEMP i która z nich jest poprawna? Zgodnie z tym, TMPmoże być tym, który woli (ze względu na GetTempFileNamefunkcję) ...
aschipfl

Odpowiedzi:


10

Aby odpowiedzieć na pytanie konkretnie:

Jaka jest różnica między nimi?

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ą do C:\windows\TEMP. AFAIK, tylko użytkownik „Systemu” może faktycznie używać tych zmiennych, o czym świadczy prosty test; otwórz okno cmd i wpisz echo %TMP%lub echo %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ć myproglub myprog --helpetc 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.


Są różne, niektóre programy używają jednego, a inne drugiego, więc potrzebujesz obu
user151019

Ciekawy. Nie mogę kompresować katalogów, ponieważ czasami dostaję odmowę dostępu. Zmieniając TEMP i TMP, %USERPROFILE%\AppData\Local\Tempnaprawiłem jeden z moich problemów, ale wygenerowałem wiele innych. Zmieniłem to z powrotem na C:\Windows\Temp. Jeśli istnieje wersja użytkownika, system może korzystać C:\Windows\Temp, podczas gdy ja mogę używać %USERPROFILE%\AppData\Local\Tempi wszyscy są zadowoleni. Dam temu szansę. Dzięki!
inf3rno

3

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


2
W rzeczywistości standardowa zmienna SUS to TMPDIR. W normie nie ma wzmianki o jednym TMPlub TEMPobu, które wywodzą się ze świata DOS.
JdeBP

@J, SUS to ????
Pacerier

1
Trochę późno, ale: Pojedyncza specyfikacja UNIX.
Tim Diggins,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.