Làm cách nào để thêm các biến môi trường do người dùng định nghĩa vào biến hệ thống PATH trong Windows 7?


9

Tôi có hai biến do người dùng xác định:

ANT_HOME được đặt thành% USERPROFILE% \ Developer \ Tools \ Apache \ Apache Ant \ apache-ant-1.8.2 JAVA_HOME được đặt thành C: \ Program Files \ Java \ jdk1.6.0_23

Và tôi muốn nối các đường dẫn đó vào biến System để tôi có thể truy cập các tệp thực thi trong các thư mục bin của chúng. Tôi đã thử

PATH được đặt thành [đường dẫn khác];% ANT_HOME% \ bin;% JAVA_HOME% \ bin

Tuy nhiên, điều đó không làm việc. Khi tôi mở một dấu nhắc lệnh và echo% PATH%, các biến người dùng không được mở rộng . Vì vậy, đường dẫn chỉ hiển thị bằng chữ ,;% ANT_HOME% \ bin;% JAVA_HOME% \ bin

Tôi dường như nhớ lại điều này hoạt động tốt trên các hệ thống Windows XP cũ của tôi. Làm cách nào để thiết lập tính năng này trên Windows 7?


Tôi vừa tìm thấy một bài viết Hỗ trợ của Microsoft từ năm 2007 khi mô tả một lỗi trong Shell32.dll. Tôi đã thêm một biến PATH vào danh sách biến người dùng của mình với PATH được đặt thành% PATH%;% ANT_HOME% \ bin;% JAVA_HOME% \ bin và giải quyết vấn đề. Tôi không thích chỉ cài đặt nó cho người dùng của mình, nhưng bằng cách nào đó, hệ thống của tôi đang trình bày triệu chứng của lỗi cũ này và tôi không thấy câu trả lời nào khác tốt hơn. Bài viết có tại: support.microsoft.com/kb/329308
Michael Prescott

Câu trả lời:


5

CẬP NHẬT SỐ 2 - Bây giờ đến câu hỏi thực tế : Tại sao các biến lồng nhau, do người dùng tạo không thể mở rộng?

Có một số vấn đề chung liên quan đến việc mở rộng biến trong Windows. Tôi đã gặp vấn đề tương tự và không tìm thấy tình huống rõ ràng, có thể tái tạo - mức đệ quy mà tại đó việc mở rộng không thành công, các ký tự đặc biệt dường như không đóng vai trò, v.v.

Cách giải quyết khả thi duy nhất tôi tìm thấy là thêm các mức đệ quy biến theo cấp đệ quy. Điều đó có nghĩa là: Hãy thử xóa tất cả các biến bạn muốn lồng vào nhau (bao gồm các cuộc gọi từ PATH đến các biến do người dùng xác định), và sau đó bắt đầu lại từ đầu. Xác định các biến cơ bản của bạn (vv ANT-HOME), xác nhận, kiểm tra xem nó có được mở rộng không, nếu có, hãy tiếp tục với cam kết cấp tiếp theo, kiểm tra ... bạn có ý tưởng không.

TRẢ LỜI CẬP NHẬT - Xác định các biến môi trường vĩnh viễn bằng CLI và GUI - Cuộn xuống để trả lời ban đầu

Phương pháp GUI:

Trên Windows 7, chỉ cần nhập "hệ thống" trong Dấu nhắc META và bạn sẽ thấy mục "Chỉnh sửa biến môi trường hệ thống". Từ đó, nhấp vào "Biến môi trường". Ở đó, bạn có thể chỉnh sửa biến hệ thống PATH (danh sách dưới cùng) hoặc thêm / chỉnh sửa biến PATH mới cho các biến môi trường người dùng.

Phương pháp dòng lệnh:

Để thay đổi vĩnh viễn các biến môi trường, bạn phải sử dụng lệnh SETX trong dòng lệnh Windows. Không giống như trong các phiên bản Windows khác, nó được tích hợp sẵn với Windows 7. Cú pháp của nó khác rất nhiều so với SET, nhưng nó cũng rất mạnh mẽ. Tuy nhiên, bạn sẽ phải cẩn thận một chút, thật dễ dàng để tạo ra một mớ hỗn độn các biến của bạn với SETX.

  • Theo mặc định, bạn thay đổi biến người dùng . Bạn có thể có một biến môi trường người dùng PATH cùng tồn tại với biến PATH của hệ thống. Nếu bạn chưa xác định nó, hãy làm như vậy bằng cách gõ:SETX PATH yourpath

  • Bạn cũng có thể thêm một giá trị cho biến hệ thống PATH. Để làm điều này, trước tiên bạn cần đưa ra một dòng lệnh với đặc quyền quản trị viên. Để thực hiện việc này, nhấn phím Meta (Windows), nhập cmdvà nhấn CTRL+ SHIFT+ ENTERvà xác nhận hộp thoại UAC.

Để thêm giá trị mới vào đường dẫn, bây giờ bạn có thể nhập

setx path "%path%;yournewpath" /m

Điều quan trọng là phải tuân theo cú pháp đó! Nếu bạn không bao gồm% path% trước, tất cả các giá trị hiện tại của đường dẫn sẽ bị mất và được thay thế chỉ bằng đường dẫn mới của bạn. Công tắc / m ở cuối đặt biến trong môi trường hệ thống.

Xin lưu ý rằng bạn sẽ phải đưa ra một dòng lệnh mới để sử dụng biến mới của mình.

Ngoài ra còn có một tài liệu tham khảo đầy đủ cho SETX tại TechNet .

TRẢ LỜI OLD Lệnh SET chỉ cập nhật các biến trong khoảng thời gian của phiên dòng lệnh hiện tại.

Cú pháp đúng để thêm giá trị vào biến là 'set [biến] =% [biến]%; [giá trị mới] `

Lưu ý rằng bên trái của dấu bằng, bạn phải bỏ qua các dấu phần trăm!

Nguồn: Tham chiếu dòng lệnh TechNet cho Windows Server


1
Cảm ơn bạn đã phản hồi rất chi tiết. Cá nhân tôi luôn thích phương thức GUI vì tôi nghĩ việc giao tiếp với nhóm của tôi dễ dàng hơn. Tôi đã nhấn mạnh vấn đề tôi gặp phải trong bài viết gốc của mình cho rõ ràng. Các biến người dùng không mở rộng trong Windows 7 như đã làm trong Windows XP. Điều này không còn hoạt động hay tôi nên điều tra bảo mật hoặc các cài đặt quản trị viên hệ thống khác có thể đang chặn hành vi thông thường?
Michael Prescott

Đó là một cách rất hay để nói "Bạn hoàn toàn bên cạnh quan điểm";)
Tobias Plutat

... và bây giờ là 2 xu của tôi cho câu hỏi thực tế. Xem chỉnh sửa câu trả lời mới nhất.
Tobias Plutat

1

Một bài viết Hỗ trợ của Microsoft từ năm 2007 trở về trước - số 329308 - mô tả một lỗi trong Shell32.dll, đây là nguyên nhân của vấn đề này. Giải pháp là thêm một PATHbiến vào danh sách biến người dùng được đặt thành

%ANT_HOME%\bin;%JAVA_HOME%\bin

Điều này làm việc xung quanh vấn đề. Tôi không thích cài đặt nó cho người dùng của mình, nhưng bằng cách nào đó, hệ thống của tôi đang xuất hiện các triệu chứng của lỗi cũ này và tôi không thấy câu trả lời nào khác tốt hơn.

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.