TEMP vs TMP trong biến môi trường


20

Có đúng không khi có hai biến môi trường TEMP và TMP? Nếu tôi thay đổi cái này thì tôi có nên thay đổi cái kia không? Ví dụ: tôi đang cài đặt cygwin và các hướng dẫn cho tôi thay đổi biến PATH, nhưng cả TEMP và TMP đều có biến đường dẫn. Sự khác biệt giữa hai là gì?

ảnh chụp màn hình các biến môi trường

Không chắc chắn tại sao mọi người muốn thấy điều này nhưng đây là các giá trị cho đường dẫn: Đường dẫn trong 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;% HỆ THỐNG% \ System32 \ WindowsPowerShell \ v1.0 \; C: \ Tệp chương trình (x86) \ Tệp chung \ Acronis \ SnapAPI \; C: \ Tệp chương trình (x86) \ Windows Kits \ 8.1 \ Bộ công cụ hiệu suất Windows \; C: \ Tệp chương trình \ Microsoft SQL Server \ 110 \ Tools \ Binn \; C: \ Tệp chương trình (x86) \ Windows Live \ Shared

Đường dẫn trong TMP:% USERPROFILE% \ AppData \ Local \ Temp


Biến đường dẫn ở đâu trong temps Tôi không thể thấy nó trong ảnh chụp màn hình của bạn
user151019

@Mark có vấn đề gì?
Celeritas

@DavidMarshall có vấn đề gì?
Celeritas

Câu hỏi của tôi không phải là làm thế nào để thay đổi biến đường dẫn. Và nếu đó là câu trả lời của các bạn thì sẽ sai vì quan điểm của tôi là, khi thay đổi bất kỳ biến nào thì nên thực hiện thành TEMP, TMP hoặc cả hai. Và bạn không chỉ định.
Celeritas

3
Kiểm tra bài viết này Tại sao có cả hai biến môi trường TMP và TEMP, và biến nào là đúng? Theo đó, TMPcó thể là người thích (do GetTempFileNamechức năng) ...
aschipfl

Câu trả lời:


10

Để trả lời câu hỏi cụ thể:

Sự khác biệt giữa hai là gì?

Không có sự khác biệt. Họ chỉ là những bí danh khác nhau cho cùng một con đường. Như Mark đã đề cập, một số chương trình sử dụng %TMP%trong khi sử dụng khác %TEMP%. Windows gán cả hai cho cùng một đường dẫn theo mặc định để đảm bảo tính nhất quán giữa các chương trình khác nhau và thậm chí bảo vệ chống lại các lỗi của nhà phát triển, chẳng hạn như sử dụng cả hai trong cùng một chương trình.

Cũng lưu ý rằng %Path%biến không có gì để làm với một trong hai %TMP%hoặc %TEMP%. %Path%là một biến hệ thống, trong khi %TMP%%TEMP%cả hai biến hệ thống cũng như biến người dùng. Các phiên bản hệ thống liên kết đến C:\windows\TEMP. AFAIK, chỉ người dùng "Hệ thống" thực sự có thể sử dụng các biến đó, bằng chứng là một thử nghiệm đơn giản; mở một cửa sổ cmd và nhập echo %TMP%hoặc echo %TEMP%, và nó trả về đường dẫn được xác định trong phiên bản người dùng của các biến. Tuy nhiên vì %Path%không có phiên bản người dùng (theo mặc định), bạn có thể làm echo %Path%và nó trả về giá trị của biến hệ thống.

Tôi không hoàn toàn chắc chắn làm thế nào các chương trình sử dụng biến hệ thống "Đường dẫn", có khả năng là điều mà Cygwin đang đề cập đến, nhưng bất kể, tôi có thể đảm bảo với bạn rằng nó không liên quan gì đến TMP hoặc TEMP.

Hy vọng rằng câu trả lời câu hỏi của bạn.

EDIT: Tôi chỉ nhớ những gì %Path%dành cho - nó cho phép bạn truy cập bất kỳ tệp nào trong bất kỳ đường dẫn nào được chỉ định trong biến mà không cần sử dụng đường dẫn đầy đủ đến tệp. Ví dụ: thêm "C: \ myprog \ bin" vào% Path% sẽ cho phép bạn chỉ cần nhập myproghoặc myprog --helpv.v vào dòng lệnh mà không cần phải nhập đường dẫn đầy đủ, như thế nào "C:\myprog\bin\myprog.exe" --help. Tất nhiên việc sử dụng dòng lệnh chỉ là một ví dụ, nó cho phép bất kỳ chương trình hoặc giao diện nào truy cập bất kỳ loại tệp nào mà không cần đường dẫn đầy đủ.


Chúng khác nhau, một số chương trình sử dụng một và một số chương trình khác vì vậy bạn cần cả hai
user151019

Hấp dẫn. Tôi không thể nén thư mục, vì đôi khi tôi bị từ chối truy cập. Thay đổi TEMP và TMP để %USERPROFILE%\AppData\Local\Tempkhắc phục một trong những vấn đề của tôi, nhưng đã tạo ra nhiều vấn đề khác. Tôi đã thay đổi nó trở lại C:\Windows\Temp. Nếu có phiên bản người dùng, thì hệ thống có thể sử dụng C:\Windows\Temp, trong khi tôi có thể sử dụng %USERPROFILE%\AppData\Local\Tempvà mọi người đều hài lòng. Tôi sẽ thử. Cảm ơn!
inf3rno

3

Bạn cần cả hai vì các chương trình khác nhau sử dụng những chương trình khác nhau.

Chúng không cần phải được đặt ở cùng một vị trí vì chỉ các chương trình được viết rất tệ sẽ sử dụng cả hai giả sử chúng chỉ đến cùng một thứ.

/ tmp là một thư mục phổ biến cho các tệp tạm thời trong Unix cũng sử dụng biến môi trường TMPDIR

Từ bộ nhớ (khi tôi sử dụng cái này vào giữa thập niên 80), TEMP là bản gốc được sử dụng trong DOS và TMP có xu hướng được sử dụng bởi các chương trình được chuyển từ Unix để khớp với / tmp. Tuy nhiên, khi các chương trình được viết bằng DOS vì không có sự kiểm soát nào, các nhà phát triển khác nhau đã sử dụng các chương trình khác nhau. Trong Windows hiện đại, mặc định của Microsoft là giống nhau cho cả hai xem tài liệu này


2
Trên thực tế, biến SUS tiêu chuẩn là TMPDIR. Tiêu chuẩn không đề cập đến một trong hai TMPhoặc TEMPcả hai đều có nguồn gốc trong thế giới DOS.
JdeBP

@J, SUS là ????
Pacerier

1
Bit muộn bây giờ nhưng: Đặc điểm kỹ thuật UNIX đơn.
Tim Diggins
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.