Ketika saya memperbarui PATH saya menggunakan dialog Lingkungan Variabel bawaan, atau sesuatu seperti Path Editor , dan kemudian membuka prompt perintah, perubahan pada PATH saya tidak akan mendaftar dengan konsol, tergantung di mana prompt perintah itu dimulai dari.
Sebagai contoh, jika saya mengedit PATH saya dan kemudian mulai cmd.exe dari Start Menu atau jalan pintas di Desktop, maka PATH saya terlihat baik-baik saja: itu telah berhasil diperbarui; Namun, jika saya mulai cmd.exe dari shortcut di mana saja lain daripada Start Menu atau Desktop, PATH baru tidak bisa membaca dan saya mendapatkan jalan lama gantinya. Itu sangat aneh.
Saya sudah mencoba menjalankan command prompt dari pintasan di desktop dan berfungsi dengan baik; Saya kemudian menyalin pintasan yang sama persis ke sub-folder di desktop, dan saya mendapatkan masalah PATH yang tidak diperbarui.
Saya menyadari ini cukup sulit untuk dijelaskan, jadi saya membuat screencast untuk menunjukkan masalah ini dalam tindakan .
Berikut screenshot dari pintasan Prompt Perintah seperti yang terlihat di screencast itu:
Ini ada di Windows Vista Home Premium SP2.
sumber
explorer
proses utama akan mendeteksi perubahan lingkungan di Registry (kotak dialog milikrundll32
) dan memperbarui lingkungannya sendiri secara otomatis. (Setidaknya di XP melakukannya.) Inilah mengapa perubahan terlihat ketika mulaicmd
dari jalan pintas.echo $PATH
tidak bekerja. Saya berasumsi itu akan segar tetapi tidak keluar sampai saya menutup semua tab Git Bash dan ConEmu.Seperti yang disarankan Rowland, ketika memulai proses baru, ia akan membaca variabel lingkungan dari proses yang memulainya. Oleh karena itu, ketika memulai command-prompt dari Start Menu atau Desktop , ia membaca variabel lingkungan dari
explorer.exe
mana, seperti yang disarankan grawity, mendeteksi perubahan pengaturan lingkungan di registri dan dengan demikian saya melihat PATH baru saya di command-prompt mulai dari Desktop atau Start Menu.Alasan saya tidak melihat pembaruan untuk PATH saya di screencast yang saya posting adalah karena saya awalnya meluncurkan jendela explorer menggunakan FARR membuat
FindAndRunRobot.exe
proses induk. FARR tidak secara otomatis mendeteksi perubahan lingkungan dan, proses anak yang dihasilkan darinya tidak mengambil PATH baru. Saya juga memiliki opsi ' Buka folder windows dalam proses terpisah ' yang diatur dalam Explorer yang berarti bahwa semua windows explorer.exe saya buka setelah yang pertama dibuka oleh FARR di mana juga anak-anak FARR .Dengan mematikan opsi ' Buka folder windows dalam proses terpisah ',
explorer.exe
proses baru tidak dibuat di bawah FARR, yang menyelesaikan masalah saya. Namun, saya juga meluncurkan jendela konsol dan hal-hal lain langsung dari FARR; ini juga mendapatkan pengaturan lingkungan lama. Jika saya me-restart FARR, maka pengaturan lingkungan baru disebarkan.Berikut adalah screenshot dari Process Explorer yang menunjukkan proses yang muncul dari FARR. Tak satu pun dari proses ini menerima pengaturan lingkungan baru dari tingkat atas
explorer.exe
kecuali jika saya memulai ulang FARR:sumber