Tại sao những thay đổi đối với PATH của tôi không được công nhận?


36

Khi tôi cập nhật PATH của mình bằng hộp thoại Biến môi trường tích hợp hoặc một cái gì đó như Path Editor , sau đó mở một dấu nhắc lệnh, các thay đổi đối với PATH của tôi sẽ không đăng ký với bàn điều khiển, tùy thuộc vào vị trí của dấu nhắc lệnh bắt đầu từ.

Ví dụ: nếu tôi chỉnh sửa PATH của mình và sau đó khởi động cmd.exe từ Menu Bắt đầu hoặc lối tắt trên Bàn làm việc, thì PATH của tôi trông vẫn ổn: nó đã được cập nhật thành công; tuy nhiên, nếu tôi khởi động cmd.exe từ một phím tắt ở bất kỳ nơi nào khác ngoài Start Menu hoặc Desktop, PATH mới sẽ không được đọc và thay vào đó tôi nhận được đường dẫn cũ. Nó rất lạ.

Tôi đã thử chạy dấu nhắc lệnh từ một phím tắt trên màn hình nền và nó hoạt động tốt; Sau đó, tôi sao chép chính xác phím tắt đó vào một thư mục con trên máy tính để bàn và tôi gặp vấn đề PATH không cập nhật.

Tôi nhận ra điều này khá khó để giải thích, vì vậy tôi đã tạo ra một đoạn ghi hình để thể hiện vấn đề này bằng hành động .

Dưới đây là ảnh chụp màn hình của phím tắt Command Prompt như được thấy trong đoạn ghi hình đó:

Cài đặt phím tắt nhắc nhở

Đây là trên Windows Vista Home Premium SP2.

Câu trả lời:


30

Khi bạn bắt đầu một quy trình mới (chẳng hạn như một dòng lệnh mới), nó sẽ chọn các biến môi trường từ quy trình đang bắt đầu nó. Khi đường dẫn được cập nhật, chỉ có quá trình thực hiện cập nhật mới có thể biết nó đã thay đổi và cài đặt không lan truyền cho đến khi bạn đăng nhập lại (đối với cài đặt theo người dùng) hoặc khởi động lại (đối với cài đặt toàn hệ thống)


2
Tuy nhiên, explorerquá trình chính sẽ phát hiện các thay đổi môi trường trong Registry (hộp thoại thuộc về rundll32) và tự động cập nhật môi trường của chính nó. (Ít nhất là trong XP, nó làm như vậy.) Đây là lý do tại sao các thay đổi được hiển thị khi bắt đầu cmdtừ một phím tắt.
grawity

Rowland, điều này cung cấp cho tôi đủ thông tin để khắc phục chính xác lý do tại sao điều này xảy ra, mặc dù nó không trả lời hoàn toàn câu hỏi của tôi. Xem câu trả lời của riêng tôi để biết chi tiết. Cảm ơn!
Charles Roper

Cảm ơn câu trả lời này! Tất cả những gì tôi phải làm là đóng dấu nhắc lệnh của mình và mở lại.
dùng1477388

Đây là giải pháp cho tôi! Tôi đang sử dụng Git Bash cho Windows trong trình bao bọc nhiều trang (ConEmu) và tự hỏi tại sao echo $PATHnó không hoạt động. Tôi cho rằng nó sẽ còn mới nhưng không xuất hiện đúng cho đến khi tôi đóng tất cả các tab Git Bash và ConEmu.
Oliv Utilo

27

Như Rowland gợi ý, khi bắt đầu một quy trình mới, nó sẽ đọc các biến môi trường từ quy trình đang bắt đầu nó. Do đó, khi bắt đầu một dấu nhắc lệnh từ Menu Bắt đầu hoặc Máy tính để bàn , nó sẽ đọc các biến môi trường từ explorer.exeđó, như grawity gợi ý, phát hiện các thay đổi đối với cài đặt môi trường trong sổ đăng ký và do đó tôi thấy PATH mới của mình trong dấu nhắc lệnh bắt đầu từ Máy tính để bàn hoặc Menu bắt đầu.

Lý do tôi không thấy các bản cập nhật cho PATH của mình trong bản ghi hình mà tôi đã đăng là vì ban đầu tôi đã khởi chạy một cửa sổ thám hiểm bằng cách sử dụng FARR để thực hiện FindAndRunRobot.exequá trình cha mẹ. FARR không tự động phát hiện các thay đổi môi trường và do đó, các tiến trình con sinh ra từ nó không nhận PATH mới. Tôi cũng có tùy chọn ' Khởi chạy các cửa sổ thư mục trong một quy trình riêng biệt được đặt trong Explorer, điều đó có nghĩa là tất cả các cửa sổ explorer.exe tôi đã mở sau cửa sổ ban đầu được mở bởi FARR, cũng là con của FARR .

Bằng cách tắt tùy chọn ' Khởi chạy các cửa sổ thư mục trong một quy trình riêng biệt , các explorer.exequy trình mới không được tạo trong FARR, giải quyết vấn đề của tôi. Tuy nhiên, tôi cũng khởi chạy các cửa sổ điều khiển và những thứ khác trực tiếp từ FARR; những thứ này cũng có được các thiết lập môi trường cũ. Nếu tôi khởi động lại FARR, thì cài đặt môi trường mới sẽ được phổ biến.

Dưới đây là ảnh chụp màn hình của Process Explorer hiển thị các quy trình được sinh ra từ FARR. Không có quy trình nào trong số này nhận được cài đặt môi trường mới từ cấp cao nhất explorer.exetrừ khi tôi khởi động lại FARR:

thám hiểm quá trình


3
Tại sao câu trả lời của tôi được bỏ phiếu xuống? Nếu có một lỗ hổng trong đó, hãy cho tôi biết và tôi sẽ cố gắng sửa nó.
Charles Roper

có ý nghĩa lớn
lwpro2
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.