2009-02-13 38 views
21

Tôi gặp phải tình huống lạ này:Tại sao PATHhell Environment PATH lại khác với PATH của môi trường hệ thống?

Biến PATH của người dùng và hệ thống của tôi khác với PATH trong quyền hạn.

Khi tôi làm:

PS C:\$env:path 
C:\Windows\System32\WindowsPowerShell\v1.0\;c:\oldpath 

Tuy nhiên điều này là không đúng, có vẻ như nó bị mắc kẹt trên một số biến PATH cũ của hệ thống của tôi, vì vậy không ai trong số các udpates tôi đã thực hiện trên nó đã không thay đổi biến này (tôi khởi động lại sau mỗi thay đổi để kiểm tra).

Tại sao điều này lại xảy ra? Tôi có phải thiết lập một biến PATH chỉ cho PowerShell?

+0

Bạn thay đổi đường dẫn như thế nào? Chỉ cần thay đổi nó với $ env: Path = foo sẽ không tồn tại trong các phiên. – EBGreen

+0

Tôi đang thay đổi PATH từ các thuộc tính của Máy tính như bình thường không phải từ bảng điều khiển. –

+0

Vì vậy, bạn thiết lập đường dẫn sau đó khởi động lại phiên powerhell của bạn và nó không phải là những gì bạn đã thay đổi nó? – EBGreen

Trả lời

30

Sự thay đổi có thể "trì hoãn", vì vậy hãy thử một hoặc nhiều các giải pháp này:

  • Log off và trên một lần nữa;
  • Task Manager>Restart "Windows Explorer" (explorer.exe)
  • Khởi động lại ứng dụng launcher của bạn (Launchy, SlickRun, vv)
  • Khởi động lại

Giải thích:
Powershell sẽ kế thừa môi trường của quá trình khởi chạy nó (tùy thuộc vào cách bạn khởi chạy nó). Đây thường là vỏ tương tác (explorer.exe). Khi bạn sửa đổi môi trường từ các thuộc tính máy tính, bạn sửa đổi môi trường của explorer.exe, vì vậy nếu bạn khởi chạy PowerShell.exe từ explorer.exe, (ví dụ từ trình đơn bắt đầu), bạn sẽ thấy môi trường mới.

Tuy nhiên, nếu bạn khởi chạy nó từ một thứ khác (nói một shell cmd.exe mà bạn đã mở), thì bạn sẽ không phải vì quá trình đó được khởi chạy trong môi trường cũ.

Nói cách khác: hãy cẩn thận cách bạn khởi chạy mọi thứ.

Các vấn đề liên quan