Bagaimana cara menambahkan variabel lingkungan yang ditentukan pengguna ke variabel sistem PATH di Windows 7?

9

Saya memiliki dua variabel yang ditetapkan pengguna:

ANT_HOME diatur ke% USERPROFILE% \ Developer \ Tools \ Apache \ Apache Ant \ apache-ant-1.8.2 JAVA_HOME diatur ke C: \ Program Files \ Java \ jdk1.6.0_23

Dan saya ingin menambahkan path tersebut ke variabel System sehingga saya dapat mengakses file executable di folder bin mereka. Saya mencoba

PATH disetel ke [jalur lain];% ANT_HOME% \ bin;% JAVA_HOME% \ bin

Namun, itu tidak berhasil. Ketika saya membuka command-prompt dan echo% PATH% variabel pengguna tidak diperluas . Jadi path hanya menampilkan literal,;% ANT_HOME% \ bin;% JAVA_HOME% \ bin

Sepertinya saya ingat ini berfungsi dengan baik pada sistem Windows XP lama saya. Bagaimana cara mengatur ini di Windows 7?

Michael Prescott
sumber
Saya baru saja menemukan artikel Dukungan Microsoft pada 2007 yang menjelaskan bug di Shell32.dll. Saya menambahkan variabel PATH ke daftar variabel pengguna saya dengan PATH diatur ke% PATH%;% ANT_HOME% \ bin;% JAVA_HOME% \ bin dan mengatasi masalah tersebut. Saya tidak suka mengaturnya hanya untuk pengguna saya, tetapi entah bagaimana sistem saya menyajikan gejala bug lama ini dan saya belum melihat jawaban lain yang lebih baik. Artikel ini ada di: support.microsoft.com/kb/329308
Michael Prescott

Jawaban:

5

UPDATE NO.2 - Sekarang ke pertanyaan aktual : Mengapa variabel bersarang, yang dibuat pengguna gagal berkembang?

Ada beberapa masalah umum tentang ekspansi variabel di Windows. Saya sudah mengalami masalah yang sama dan tidak menemukan keadaan yang jelas dan dapat direproduksi - tingkat rekursi di mana ekspansi gagal tidak konsisten, karakter khusus tampaknya tidak berperan, dll.

Satu-satunya solusi yang saya temukan adalah menambahkan variabel tingkat rekursi dengan tingkat rekursi. Itu berarti: Coba hapus semua variabel yang ingin Anda buat bersarang satu sama lain (termasuk panggilan dari PATH ke variabel yang ditentukan pengguna Anda), dan kemudian mulai dari awal. Tentukan variabel dasar Anda (dll. ANT-HOME), komit, periksa apakah diperluas, jika ya, lanjutkan dengan komit tingkat berikutnya, periksa ... Anda mendapatkan ide.

JAWABAN TERBARU - Menentukan variabel lingkungan permanen menggunakan CLI dan GUI - Gulir ke bawah untuk jawaban aslinya

Metode GUI:

Pada Windows 7, cukup ketik "sistem" di META-Prompt dan Anda akan melihat entri "Edit Variabel Lingkungan Sistem". Dari sana, klik "Variabel lingkungan". Di sana, Anda dapat mengedit variabel sistem PATH (daftar bawah) atau menambah / mengedit variabel PATH baru ke variabel lingkungan pengguna.

Metode baris perintah:

Untuk mengubah variabel lingkungan secara permanen, Anda harus menggunakan perintah SETX di baris perintah Windows. Tidak seperti versi Windows lainnya, Windows 7 terintegrasi dengan Windows 7. Sintaksnya berbeda dari SET, tetapi juga kuat. Anda harus sedikit berhati-hati, mudah untuk mengacaukan variabel Anda dengan SETX.

  • Secara default, Anda mengubah variabel pengguna . Anda dapat memiliki variabel lingkungan pengguna PATH yang dengan senang hati hidup berdampingan dengan variabel sistem PATH. Jika Anda belum mendefinisikannya, lakukan dengan mengetik:SETX PATH yourpath

  • Anda juga dapat menambahkan nilai ke PATH variabel sistem. Untuk melakukan ini, pertama-tama Anda perlu memunculkan baris perintah dengan hak istimewa admin. Untuk melakukan ini, tekan tombol Meta (Windows), ketik cmddan tekan CTRL+ SHIFT+ ENTERdan konfirmasikan dialog UAC.

Untuk menambahkan nilai baru ke jalur, sekarang Anda dapat memasukkan

setx path "%path%;yournewpath" /m

Sangat penting untuk mengikuti sintaks itu! Jika Anda tidak memasukkan% path% terlebih dahulu, semua nilai path yang ada akan hilang dan diganti hanya dengan Anda path baru. Sakelar / m di bagian akhir menetapkan variabel di lingkungan sistem.

Harap dicatat bahwa Anda harus memunculkan baris perintah baru untuk menggunakan variabel baru Anda.

Ada juga referensi lengkap untuk SETX di TechNet .

JAWABAN LAMA Perintah SET memperbarui variabel hanya selama durasi sesi baris perintah saat ini.

Sintaks yang benar untuk menambahkan nilai ke variabel adalah 'set [variabel] =% [variabel]%; [nilai baru] `

Perhatikan bahwa di kiri tanda sama dengan, Anda harus menghilangkan tanda persen!

Sumber: Referensi baris perintah TechNet untuk Windows Server

Tobias Plutat
sumber
1
Terima kasih atas tanggapan yang sangat rinci. Saya pribadi selalu lebih suka metode GUI karena saya pikir lebih mudah untuk berkomunikasi dengan tim saya. Saya telah menyoroti masalah yang saya alami pada posting asli saya untuk kejelasan. Variabel pengguna tidak berkembang di Windows 7 seperti yang mereka lakukan di Windows XP. Apakah ini tidak lagi berfungsi atau haruskah saya menyelidiki keamanan atau pengaturan administrator sistem lain yang mungkin memblokir perilaku yang biasa?
Michael Prescott
Itu cara yang sangat baik untuk mengatakan "Anda benar-benar tidak penting";)
Tobias Plutat
... dan sekarang 2 sen saya pada pertanyaan yang sebenarnya. Lihat edit jawaban terbaru.
Tobias Plutat
1

Artikel Dukungan Microsoft dari jalan di 2007 - nomor 329308 - menjelaskan bug di Shell32.dll, yang merupakan penyebab masalah ini. Solusinya adalah menambahkan PATHvariabel ke daftar variabel pengguna yang diatur ke

%ANT_HOME%\bin;%JAVA_HOME%\bin

Ini mengatasi masalah ini. Saya tidak suka mengaturnya hanya untuk pengguna saya, tetapi entah bagaimana sistem saya menunjukkan gejala bug lama ini dan saya belum melihat jawaban lain yang lebih baik.

Michael Prescott
sumber