Câu hỏi PATH và các biến môi trường khác là gì, và làm cách nào tôi có thể đặt hoặc sử dụng chúng?


Câu hỏi về

  • thiết lập biến môi trường
  • các PATH

rất phổ biến ở đây, và trong hầu hết các trường hợp, các câu trả lời rất giống nhau. Trong tương lai sẽ tốt hơn nếu có một Q / A tốt cho việc này.

Vì vậy, câu hỏi là: Biến môi trường là gì, như thực thi PATHvà làm cách nào để tôi có thể thay đổi và sử dụng chúng trên các hệ điều hành chính?

Một câu trả lời hay sẽ bao gồm một lời giải thích đơn giản về các biến môi trường và đặc biệt là PATH có nghĩa là với hệ điều hành, cũng như các hướng dẫn đơn giản về cách thiết lập và đọc chúng tương ứng.


316
2018-05-16 18:25


gốc


Mệt mỏi vì phải làm điều đó bằng tay mỗi khi tôi cần, tôi đã viết một số mục đăng ký để thêm các mục trình đơn ngữ cảnh cho AddToPath và RemoveFromPath vào các thư mục, sử dụng một ứng dụng miễn phí có tên pathed.exe. Sau đây là liên kết đến hướng dẫn đầy đủ: addictivetips.com/windows-tips/… Bây giờ tôi có thể dễ dàng thêm các thư mục vào biến PATH hoặc xóa chúng khỏi nó, mà không phải chỉnh sửa bất kỳ tệp nào hoặc lo lắng về việc làm rối loạn định dạng của biến. Hy vọng nó giúp. =) - Haroon Q. Raja
Trên Windows có một phím tắt để mở các thuộc tính của System ie. Control Panel -> System Đó là WIN chìa khóa trên bàn phím + Pause / Break (WIN + Break). Điều này là cực kỳ hữu ích và đẩy nhanh quá trình thiết lập các biến môi trường mới trên Win8 bởi vì ở đó bạn phải bấm qua một vài cửa sổ trong ui hiện đại (Vâng. Nếu nó hiện đại thì tôi sẽ trồng một cây xương rồng trên lòng bàn tay). Tất nhiên bạn có thể tạo kịch bản PowerShell hoặc sử dụng lệnh setx và đừng lo lắng thêm về nó: D - termil0r
Trong Windows 8, điều hướng nhanh nhất để thay đổi các biến môi trường của hệ thống và người dùng đang sử dụng tìm kiếm. <kbd> Thắng </ kbd> + <kbd> W </ kbd> sẽ tìm kiếm tất cả các cài đặt. Tìm kiếm envvà các tùy chọn cần thiết được liệt kê. - FRIdSUN
Tôi nghĩ rằng nó nhanh hơn và rõ ràng hơn bằng cách mở CMD và nhập set, hoặc là PowerShell và nhập Get-Childitem env:. - paradroid
Nếu bạn đang chỉnh sửa biến đường dẫn rất nhiều (như khi thiết lập một hệ thống mới), nó có thể giúp đỡ để có một shortcut đến hộp thoại System Properties trên màn hình nền. Để làm như vậy, kích phải vào desktop, chọn New Shortcut, và nhập systempropertiesadvanced.exe. Sau đó, bạn có thể nhấp vào liên kết để vào hộp thoại Thuộc tính hệ thống, sau đó nhấp vào Biến môi trường để đến hộp thoại có cài đặt đường dẫn. - Brian Burns


Các câu trả lời:


Biến môi trường là gì?

Biến môi trường giữ các giá trị liên quan đến môi trường hiện tại, như Hệ điều hành hoặc phiên người dùng.

Con đường

Một trong những nổi tiếng nhất được gọi là PATH trên Windows, Linux và Mac OS X. Nó chỉ định các thư mục trong đó các chương trình thực thi * được đặt trên máy có thể được khởi động mà không biết và nhập toàn bộ đường dẫn đến tệp trên dòng lệnh. (Hoặc trong Windows, Chạy trong Trình đơn Bắt đầu hoặc Win+R).

Trên Linux và Mac OS X, nó thường chứa tất cả bin và sbin thư mục có liên quan cho người dùng hiện tại. Trên Windows, nó chứa ít nhất C:\Windows và C:\Windows\system32 thư mục - đó là lý do bạn có thể chạy  calc.exe hoặc là notepad.exe từ dòng lệnh hoặc Chạy hộp thoại, nhưng không firefox.exe. (Firefox nằm ở C:\Program Files\Mozilla Firefox. Để biết thông tin về cách bao gồm Firefox, hãy truy cập đây.)

Ví dụ: nhập calc (các .exe  có thể được bỏ qua) trong dòng lệnh trên Windows sẽ khởi động Windows Calculator.

* Bạn có thể thêm hỗ trợ cho các phần mở rộng tập tin khác hơn .exe bằng cách chỉnh sửa %PATHEXT%.

Khác

Các biến khác có thể cho các chương trình biết loại thiết bị đầu cuối nào được sử dụng (TERM trên Linux / Mac OS X), hoặc, trên Windows, nơi đặt thư mục Windows (ví dụ: %WINDIR% Là C:\Windows).

Tạo các biến môi trường mới

Trong Windows, Linux và Unix, có thể tạo các biến môi trường mới, sau đó các giá trị của nó được cung cấp cho tất cả các chương trình khi khởi động.

Bạn có thể sử dụng điều này khi viết kịch bản hoặc chương trình được cài đặt hoặc triển khai cho nhiều máy và cần tham khảo các giá trị cụ thể cho các máy này. Trong khi một hiệu ứng tương tự có thể đạt được bằng cách sử dụng các cài đặt cấu hình cho chương trình cụ thể, nó dễ dàng hơn để làm điều này bằng cách sử dụng một biến môi trường nếu nhiều chương trình cần truy cập cùng một giá trị.

các cửa sổ

GUI

  1. Mở Control Panel » System » Advanced » Environment Variables.

  2. Kiểu control sysdm.cpl,,3 trong hộp thoại Chạy (Win+R) và nhấp Environment Variables.
    Để chỉnh sửa biến người dùng, bạn cũng có thể nhập

    %windir%\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables
    

    trong hộp thoại Chạy.

  3. Nhấp chuột phải (My) Computer và nhấp vào Properties, hoặc chỉ cần nhấn Win+Phá vỡ.

    • Trong XP nhấp vào Advanced » Environment Variables.
    • Trong Vista + bấm vào Advanced system settings » Environment Variables.
  4. Có rất nhiều cách khác để đạt được cùng một vị trí, chẳng hạn như bằng cách gõ "biến môi trường" trong hộp tìm kiếm Start Menu / Screen và vv.

Các biến môi trường trong Windows được phân tách thành các giá trị cụ thể của người dùng và máy / hệ thống. Bạn có thể xem và chỉnh sửa các giá trị của chúng ở đó. Giá trị hiện tại của họ khi khởi chạy được cung cấp cho tất cả các chương trình.

Cũng có Trình soạn thảo môi trường nhanh, giúp thiết lập và thay đổi các biến môi trường trong Windows mà không cần phải đi sâu vào các thiết lập hệ thống. Một chương trình mã nguồn mở khác cho Windows mà môi trường đường dẫn có thể được chỉnh sửa rất thuận tiện là Trình chỉnh sửa đường dẫn.

Dòng lệnh

định dạng

Biến môi trường trong Windows được ký hiệu bằng dấu phần trăm (%) xung quanh tên:

%name%

tiếng vang

Để hiển thị giá trị của biến môi trường trong cmd.exe, kiểu echo %name%.

C:\>echo %USERPROFILE%
C:\Users\Daniel

bộ

Đến tạo / đặt biến, sử dụng set varname=value:

C:\>set FunnyCatPictures=C:\Users\Daniel\Pictures\Funny Cat Pictures

C:\>set FunnyCatPicturesTwo=%USERPROFILE%\Pictures\Funny Cat Pictures 2

Đến thêm / thêm biến, sử dụng set varname=value;%varname%:

C:\>set Penguins=C:\Linux

C:\>set Penguins=C:\Windows;%Penguins%

C:\>echo %Penguins%
C:\Windows;C:\Linux

Các biến môi trường được thiết lập theo cách này có sẵn cho (phần còn lại của) thời gian của tiến trình Command Prompt mà chúng được thiết lập, và có sẵn cho các quá trình được bắt đầu sau khi các biến được đặt.

setx

Đến tạo / đặt một biến số vĩnh viễn, sử dụng setx varname "value":

C:\>setx FunnyCatPictures "C:\Users\Daniel\Pictures\Funny Cat Pictures"

[Restart CMD]

C:\>echo %FunnyCatPictures%
C:\Users\Daniel\Pictures\Funny Cat Pictures

không giống set, không có dấu bằng và giá trị phải được đặt trong dấu ngoặc kép nếu nó chứa bất kỳ dấu cách nào. Lưu ý rằng các biến có thể mở rộng thành chuỗi có dấu cách (ví dụ: %PATH% trở thành C:\Program Files), vì vậy tốt nhất nên bao gồm dấu ngoặc kép xung quanh các giá trị chứa bất kỳ biến nào.

Bạn phải thêm thủ công setx cho các phiên bản Windows trước Vista.
Công cụ hỗ trợ Windows XP Gói Dịch vụ 2

Danh sách biến môi trường Windows

Đây là danh sách biến môi trường mặc định, được tích hợp trong Windows. Một số ví dụ: %WINDIR%, %SystemRoot%, %USERPROFILE%%APPDATA%. Giống như hầu hết các tên trong Windows, chúng không phân biệt chữ hoa chữ thường.

Các dẫn xuất Unix (FreeBSD, GNU / Linux, OS X)

Biến môi trường trong Linux được đặt trước bằng ký hiệu đô la ($) chẳng hạn như $ HOME hoặc $ HOSTNAME. Nhiều biến nổi tiếng và tiêu chuẩn được viết bằng chữ in hoa để biểu thị điều đó. Hãy nhớ rằng các tên biến phân biệt chữ hoa chữ thường, có nghĩa là $ User và $ USER hoàn toàn không liên quan đến quan điểm của shell.

Các dẫn xuất của Unix định nghĩa các biến rộng của hệ thống trong các kịch bản shell nằm chủ yếu trong /etc nhưng các giá trị cụ thể cho người dùng có thể được cung cấp cho các biến đó trong các tập lệnh nằm trong thư mục chính (ví dụ: /etc/profile, $HOME/.bash_profile). Các .profile tệp trong thư mục chính là một nơi phổ biến để xác định biến người dùng.

Đặt biến

Các tệp này là các kịch bản lệnh shell thông thường và có thể chứa nhiều hơn các khai báo biến môi trường. Để đặt biến môi trường, hãy sử dụng export. Để hiển thị các biến môi trường được xác định hiện tại của bạn trong một thiết bị đầu cuối, hãy chạy env.

Các export lệnh là một cách tiêu chuẩn để xác định các biến. Cú pháp rất trực quan. Kết quả là giống hệt nhau cho hai dòng này, nhưng sự lựa chọn đầu tiên là thích hợp hơn trong trường hợp tính di động cho pre-POSIX Bourne shell là cần thiết.

var=value; export var
export var=value

C shell và con cháu của nó sử dụng một cú pháp hoàn toàn khác; đó, lệnh là setenv.

Xem dự án tài liệu về Linux, Đường dẫn HOWTO để có một cuộc thảo luận kỹ lưỡng hơn về chủ đề này.

Có lẽ trái với niềm tin chung, OS X là "Unix" hơn Linux. Ngoài các tệp đã được đề cập, $ PATH có thể được sửa đổi trong các tệp này:

  • /etc/paths chứa tất cả các thư mục mặc định được thêm vào đường dẫn, như /bin và /usr/sbin.
  • Bất kỳ tệp nào trong /etc/paths.d - thường được các trình cài đặt sử dụng để tạo các tệp thi hành mà chúng cung cấp có sẵn từ trình bao mà không cần chạm vào các tệp cấu hình trên toàn hệ thống hoặc người dùng cụ thể. Các tệp này chỉ chứa một đường dẫn trên mỗi dòng. ví dụ: / Chương trình / Mozilla / Lịch / bin.

Liện kết ngoại:

Biến môi trường trong XP
Công cụ hỗ trợ Windows XP Gói Dịch vụ 2 (Bao gồm setx)
Biến môi trường trong Windows Vista và Windows 7
Thêm thực thi vào hộp thoại Run
Mẹo về Mac OSX - Cài đặt Biến môi trường
TLDP: Đường dẫn thế nào


309
2018-05-16 18:44



Trên Windows Vista trở đi, bạn có thể sử dụng SETX để thực hiện thay đổi vĩnh viễn. Nó có một cú pháp hơi khác. SETX phải được thêm từ Windows Server 2003 Resource Kit cho các phiên bản trước đó của NT. - paradroid
@paradroid Nice, không biết điều đó (không phải là người dùng Windows). Chủ đề này là wiki cộng đồng, bạn có thể tiếp tục và chỉ chỉnh sửa thông tin đó. - Daniel Beck♦
@JdeBP Tiêu đề phần có nghĩa là tham chiếu cách đặt các giá trị này trên giao diện người dùng, được gọi là vỏ trên Windows, trái ngược với phần sau, giao diện dòng lệnh. Tôi đã chỉnh sửa điều này trước khi tôi nhìn thấy bình luận của bạn 10 giờ trước. Noone đã từng đề cập rằng điều này chỉ áp dụng cho Explorer. - Daniel Beck♦
@JdeBP Câu trả lời bạn liên kết đến không thực sự áp dụng trong trường hợp này, vì bạn đã nói về việc thiết lập các giá trị trong sổ đăng ký. Cài đặt qua hộp thoại sẽ phát WM_SETTINGCHANGE Tôi tưởng tượng, và do đó thông báo cho các bên quan tâm về các giá trị mới. Đó là lý do tại sao tôi hỏi làm thế nào nó được áp dụng ở đây. Làm một cái gì đó in đậm không thay đổi ý nghĩa của nó và không làm cho nó dễ hiểu hơn, giống như lặp lại cùng một câu, chỉ to hơn. Ngoài ra, tôi đã chỉnh sửa bài đăng này một vài giờ trước để đề cập cụ thể rằng các giá trị mà các quá trình nhận được được đặt khi chúng được khởi chạy. - Daniel Beck♦
@ JdeBP Bạn cũng có thể nhận thấy rằng câu hỏi là khá cơ bản trong tự nhiên. Giải thích một cách cẩn thận các phức tạp về cách thay đổi các biến môi trường được phân phối (nghiêm túc, WM_SETTINGCHANGE? Windows API? Đây không phải là đối tượng của câu hỏi này!) Có thể không phải là một ý tưởng hay vì nó có thể gây nhầm lẫn cho người đọc thay vì giải thích những biến này là gì. - Daniel Beck♦


Bài đăng này có quan điểm kỹ thuật hơn Daniel, nhưng không giải thích được nhiều khái niệm.


Các Bài viết trên Wikipedia cũng là một sự giới thiệu tuyệt vời.

Linux và hầu hết các BSD

Trong hầu hết các shell dòng lệnh, các biến môi trường tạm thời được thiết lập bằng cách sử dụng export (sh, bash, zsh) hoặc setenv (csh, tcsh) lệnh.

  • Ví dụ về việc thêm vào $HOME/bin đến $PATH trong bash hoặc zsh:

    export PATH="$HOME/bin:$PATH"
    

    (Trong trường hợp cụ thể này, export là không cần thiết kể từ PATH đã là một phần của môi trường.)

  • csh, tcsh:

    setenv PATH "$HOME/bin:$PATH"
    

Các biến môi trường liên tục có thể được đặt trong một vài giai đoạn riêng biệt:

  • Đăng nhập:

    • Cài đặt phiên đăng nhập: Linux pam_env, thường đọc từ /etc/environment

    • Đăng nhập thiết bị đầu cuối: Tệp "hồ sơ" của trình bao.

      • bash sử dụng /etc/profile và là người đầu tiên: ~/.bash_profile, ~/.bash_login, ~/.profile. Trang thủ công bash(1) phần Yêu cầu.

        Thông thường, tệp hồ sơ của người dùng bao gồm một cuộc gọi rõ ràng cho ~/.bashrc quá.

      • zsh: Trang thủ công zsh(1) phần Các tệp khởi động / tắt máy.

      • csh và các shell khác: Xem các trang hướng dẫn thích hợp.

    • Đăng nhập đồ họa: Không chắc chắn; có thể khác nhau tùy thuộc vào người quản lý đăng nhập. GDM dường như đã đọc ~/.profile trong hệ thống của tôi.

  • Mở cửa sổ đầu cuối:

    • bash sử dụng /etc/bash.bashrc và ~/.bashrc.

Windows NT series

  • Trong Command Prompt (cmd.exe), sử dụng set name=value để thay đổi biến môi trường cho cửa sổ đó.

    Để nối thêm c:\bin đến %PATH%, sử dụng:

    set path=%path%;c:\bin
    

    Điều này chỉ ảnh hưởng đến điều đó cmd.exe quá trình và bất kỳ Mới các quy trình được khởi chạy từ nó.

  • Để thực hiện các thay đổi liên tục, hãy sử dụng Bảng điều khiển → Hệ thống → Nâng cao → Biến môi trường. (tài liệu)

    Chú thích: Mặc dù cài đặt người dùng thường ghi đè các hệ thống, PATH biến được xử lý đặc biệt: cả cài đặt hệ thống và người dùng được hợp nhất thành giá trị cuối cùng.

    Các thay đổi được lưu vào Registry (xem bên dưới) và áp dụng ngay lập tức cho tất cả Mới các quy trình được tạo bởi Explorer (trình bao đồ họa), ví dụ, thông qua Start Menu.

  • Các biến môi trường toàn hệ thống được lưu giữ trong Registry, HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentvà được tải khi khởi động hệ thống.

    Môi trường người dùng được lưu giữ trong HKCU\Environment và được tải trong quá trình đăng nhập của người dùng.

  • Theo mặc định, hệ thống cũng tìm kiếm set lệnh trong AUTOEXEC.NT tập tin.

MS-DOS, Windows 16 bit, Windows 9x

  • Trong MS-DOS Prompt (command.com), sử dụng set name=value, như trong WinNT.

    Tương tự, chạy set tương tác chỉ ảnh hưởng đến điều đó command.com ví dụ, cùng với bất kỳ quy trình mới nào được khởi chạy từ nó.

  • Để thực hiện các thay đổi liên tục, hãy thêm hoặc chỉnh sửa thích hợp set dòng trong C:\AUTOEXEC.BAT, sau đó khởi động lại.

    • Cách khắc phục để tránh khởi động lại, đối với Windows 9x: mở cửa sổ MS-DOS Prompt, đặt các biến thích hợp, đóng quá trình Explorer hiện tại (Bắt đầu → Tắt → trong khi giữ Ctrl + Shift, nhấp Hủy bỏ), chạy explorer.exe từ cửa sổ nhắc MS-DOS.

VMS

(Không thể cưỡng lại được.)

DCL không có khái niệm "đường dẫn", nhưng có thể đặt các định nghĩa lệnh và biểu tượng khác nhau SYS$LOGIN:LOGIN.COM.


61
2018-05-16 19:03



Phần VMS là sai. DCL có DCL$PATH cho "lệnh nước ngoài tự động". - JdeBP
@ grawity, Bạn có ý gì bởi "vms không thể cưỡng lại ..."? - Pacerier


Cho bash vỏ PATH các biến môi trường toàn cục (không phải đầu cuối), tôi thực hiện theo quy ước được sử dụng trong bản cài đặt Ubuntu VM của tôi - các shell khác sẽ thay đổi:

Caveat: Toàn bộ trình tự khởi động trình bao, .bashrc, .profile, vv các tệp có nguồn gốc theo thứ tự nào ?, khi nào tôi phải đăng nhập lại để hiển thị các biến, bí danh, v.v., sự khác nhau giữa đăng nhập, tương tác và không tương tác - tôi sử dụng cron?, và tại sao khi tôi làm . ~/.bashrc là ngu ngốc của tôi PATH biến phát triển lâu hơn và lâu hơn? là những câu hỏi quan trọng mà tôi nghĩ đến khi tôi nghĩ đến PATH biến.

Trong thực tế, tôi hoàn toàn viết lại toàn bộ tập tin khởi động bash của tôi lấy ý tưởng từ các tập tin bộ xương của Ubuntu và Cygwin, và đây là một số trong các trang web của tôi:

  1. Xuất PATH và các biến môi trường toàn cầu khác (tức là LD_LIBRARY_PATH) các biến trong .profile;
  2. Sử dụng logic trong ~/.profile nguồn $HOME/.bashrc nếu nó tồn tại;
  3. Thực hiện hàng rào của ~/.bashrc với một bài kiểm tra để thực hiện tương tác, thoát ra khác;
  4. Đặt tất cả bí danh, shopt's, thiết lập nhanh chóng, kiểm soát lịch sử, thiết lập thiết bị đầu cuối, định nghĩa chức năng, vv (tương tác thiết lập liên quan) trong một phần của ~/.bashrc được bảo vệ để chỉ chạy ở chế độ tương tác;
  5. Loại bỏ các tệp khởi động bash khác, vì sự tồn tại của chúng xác định liệu đường dẫn điều khiển có thông qua .profile và .bashrc hoạt động như mong đợi. Tức là, trừ khi có những yêu cầu cụ thể để làm khác, loại bỏ ~/.bash_profile & ~/.bash_login;
  6. Khi tôi đang ở dấu nhắc bash và tôi cần cập nhật một số thiết lập mặc định, tôi chỉnh sửa ~/.bashrc tập tin, sau đó chỉ đơn giản là nguồn nó với một . ~/.bashrc để có được những thay đổi đó trong trình bao hiện tại của tôi.
  7. Khi tôi thay đổi một biến môi trường như PATH, Tôi cần sửa đổi và tìm nguồn ~/.profile;
  8. Tôi gọi các cuộc gọi của tôi đến fink, port và brew các thiết lập cụ thể trong .profile.

Đó là 2 xu của tôi về chủ đề này.


8
2018-01-15 17:49





Q:  Biến môi trường là gì?

A: Biến môi trường tương tự như các biến trong bất kỳ ngôn ngữ lập trình nào. Trong trường hợp của Windows, hoặc các hệ thống Unix, chúng sẽ lưu trữ các giá trị khác nhau để cho phép các chương trình và nhiệm vụ có được thông tin hệ điều hành cần thiết hoặc thông tin 'Môi trường'. Ví dụ:

USERPROFILE: thư mục người dùng trong tệp OS.

MAIL: nơi có thể tìm thấy thư của người dùng trong các tệp OS.

Hỏi: Biến PATH LÀ GÌ?

A: Biến PATH đặt đường dẫn thư mục để xem khi nào các lệnh được thực thi, cả hai cho các lệnh RUN và cho các cuộc gọi nội bộ từ các chương trình. Điều này ngăn cản một chương trình cần phải biết vị trí cài đặt của nó để gọi các quá trình thực thi khác.

Nó nhìn vào biến môi trường Windows PATH hệ thống và kiểm tra từng vị trí cho thực thi nhất định. Vì vậy, thêm một vị trí vào biến PATH, cho phép thực thi được gọi trực tiếp.

"Khi một lệnh được nhập vào một lệnh shell hoặc một cuộc gọi hệ thống được thực hiện bởi một chương trình để thực hiện một chương trình, hệ thống đầu tiên tìm kiếm thư mục làm việc hiện tại và sau đó tìm kiếm đường dẫn, kiểm tra từng thư mục từ trái sang phải" - http://en.wikipedia.org/wiki/PATH_(variable)


Q: LÀM THẾ NÀO để thêm một vị trí vào biến PATH?

A: Bạn cần phải chỉnh sửa chuỗi biến của Biến môi trường biến PATH để bao gồm vị trí thực thi của bạn.

Một cách để làm điều này Từ (https://kb.wisc.edu/cae/page.php?id=24500) 1. Mở Start Menu và nhấp chuột phải vào Computer. Chọn Thuộc tính. 2. Chọn Cài đặt hệ thống nâng cao. 3. Trong tab Advanced (Nâng cao), chọn Environment Variable (Biến môi trường). 4. Chọn EDIT hoặc MỚI. (đối với PATH bạn rất có thể muốn EDIT). 5. Thêm đường dẫn vị trí của bạn. ví dụ: C: \ wamp \ bin \ php \ php5.5.12;

Tôi hy vọng điều này làm rõ một số sự nhầm lẫn. Chỉnh sửa và bình luận được hoan nghênh.


6
2017-07-25 09:57