Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Các biến môi trường trong PowerShell

Biến môi trường là cài đặt chung cho máy tính Linux, Mac hoặc Windows của bạn, được lưu trữ cho hệ thống shell để sử dụng khi thực thi lệnh. Nhiều cài đặt được đặt theo mặc định trong quá trình cài đặt hoặc tạo người dùng.

Ví dụ:thư mục chính của bạn được đặt làm biến môi trường khi bạn đăng nhập. Nó trông như thế nào trong PowerShell tùy thuộc vào hệ điều hành của bạn.

Trên Windows:

PS C:\Users\bogus> Get-Variable HOME -valueOnly
C:\Users\bogus

Trên Linux:

pwsh> Get-Variable HOME -valueOnly
HOME=/home/seth

Trên máy Mac:

pwsh> Get-Variable HOME -valueOnly
HOME=/Users/bogus

Bạn thường không sử dụng trực tiếp các biến môi trường, nhưng chúng được các ứng dụng và daemon riêng lẻ tham chiếu khi cần thiết. Tuy nhiên, các biến môi trường có thể hữu ích khi bạn muốn ghi đè cài đặt mặc định hoặc khi bạn cần quản lý cài đặt mới mà hệ thống của bạn không có lý do gì để tự tạo.

Bài viết này nói về các biến môi trường trong môi trường PowerShell nguồn mở và do đó, nó có thể áp dụng cho PowerShell chạy trên Windows, Linux và Mac. Người dùng Bash shell nên tham khảo bài viết của tôi về các biến môi trường Bash.

Đối với bài viết này, tôi đã chạy PowerShell trên hệ điều hành nguồn mở Linux. Các lệnh giống nhau bất kể nền tảng của bạn, mặc dù kết quả đầu ra sẽ khác nhau (ví dụ:theo thống kê không chắc rằng tên người dùng của bạn là seth ).

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

Biến môi trường trong PowerShell là loại biến đặc biệt cung cấp cho hệ thống thông tin về môi trường hệ điều hành. Với các biến môi trường, bạn có thể xem và thay đổi các biến trong sổ đăng ký Windows, cũng như các biến được đặt cho một phiên cụ thể.

Trong PowerShell, các biến môi trường được lưu trữ trong Env: "drive", có thể truy cập thông qua nhà cung cấp môi trường PowerShell , một hệ thống con của PowerShell. Đây không phải là một ổ đĩa vật lý mà là một hệ thống tệp ảo.

Vì các biến môi trường tồn tại trong Env: lái xe, bạn phải thêm Env: vào tên biến khi bạn tham chiếu đến chúng. Ngoài ra, bạn có thể đặt vị trí làm việc của mình thành Env: lái xe với Vị trí đặt để bạn có thể coi tất cả các biến môi trường là biến cục bộ:

PS> Set-Location Env:
PS> pwd

Path
----
Env:/

Các biến môi trường truyền tải thông tin về phiên đăng nhập của bạn đến máy tính của bạn. Ví dụ:khi một ứng dụng cần xác định vị trí lưu tệp dữ liệu theo mặc định, nó thường gọi đến HOME biến môi trường. Có thể bạn chưa bao giờ đặt HOME tự thay đổi, nhưng nó vẫn tồn tại vì hầu hết các biến môi trường đều do hệ điều hành của bạn quản lý.

Bạn có thể xem tất cả các biến môi trường được đặt trên hệ thống của mình bằng Get-ChildItem từ bên trong Env: lái xe. Danh sách dài, vì vậy hãy chuyển đầu ra thông qua phân trang ngoài máy chủ để dễ đọc:

PS> Get-ChildItem | out-host -paging
LOGNAME      seth
LS_COLORS    rs=0:mh=00:bd=48;5;232;38;5;
MAIL         /var/spool/mail/seth
MODULEPATH   /etc/scl/modulefiles:/etc/scl/modulefiles
MODULESHOME  /usr/share/Modules
OLDPWD       /home/seth
PATH         /opt/microsoft/powershell/6:/usr/share/Modules/bin
PSModulePath /home/seth/.local/share/powershell/Modules
PWD          /home/seth
[...]

Nếu bạn không ở trong Env: lái xe, sau đó bạn có thể làm điều tương tự bằng cách thêm Env: theo lệnh của bạn:

PS> Get-ChildItem Env: | out-host -paging
LOGNAME      seth
LS_COLORS    rs=0:mh=00:bd=48;5;232;38;5;
MAIL         /var/spool/mail/seth
MODULEPATH   /etc/scl/modulefiles:/etc/scl/modulefiles

Các biến môi trường có thể được đặt, gọi lại và xóa bằng một số cú pháp tương tự được sử dụng cho các biến bình thường. Giống như các biến khác, mọi thứ bạn đặt trong một phiên chỉ áp dụng cho phiên cụ thể đó.

Nếu bạn muốn thực hiện các thay đổi vĩnh viễn đối với một biến, bạn phải thay đổi chúng trong Windows Registry trên Windows hoặc trong tệp cấu hình shell (chẳng hạn như ~ / .bashrc ) trên Linux hoặc Mac. Nếu bạn chưa quen với việc sử dụng các biến trong PowerShell, hãy đọc các biến của tôi trong bài viết PowerShell trước khi tiếp tục.

Các biến môi trường được sử dụng để làm gì?

Các biến môi trường khác nhau được một số hệ thống khác nhau trong máy tính của bạn sử dụng. PATH của bạn Ví dụ, biến rất quan trọng đối với trình bao của bạn, nhưng ít quan trọng hơn nhiều đối với Java (cũng có các đường dẫn, nhưng chúng là đường dẫn đến các thư viện Java quan trọng chứ không phải là các thư mục hệ thống chung). Tuy nhiên, NGƯỜI DÙNG biến được sử dụng bởi một số quy trình khác nhau để xác định ai đang yêu cầu một dịch vụ.

Trình hướng dẫn cài đặt, như khung Nullsoft Scriptable Install System (NSIS) mã nguồn mở, cập nhật các biến môi trường của bạn khi bạn cài đặt một ứng dụng mới. Đôi khi, khi bạn đang cài đặt thứ gì đó bên ngoài bộ công cụ dự kiến ​​của hệ điều hành, bạn có thể phải tự quản lý một biến môi trường. Hoặc, bạn có thể chọn thêm một biến môi trường để phù hợp với sở thích của mình.

Chúng khác với các biến thông thường như thế nào?

Khi bạn tạo một biến bình thường, biến được coi là cục bộ, nghĩa là nó không được xác định bên ngoài shell đã tạo ra nó.

Ví dụ:tạo một biến:

PS> Set-Variable -Name VAR -Value "example"
PS> gv VAR -valueOnly
example

Khởi chạy một trình bao mới, ngay cả từ trong trình bao hiện tại của bạn:

PS> pwsh
PS c:\> gv VAR -valueOnly
gv : Cannot find a variable with the name 'example'.

Mặt khác, các biến môi trường có nghĩa là phạm vi toàn cầu. Chúng tồn tại riêng biệt với shell đã tạo ra chúng và có sẵn cho các quy trình khác.

Làm cách nào để bạn đặt một biến môi trường?

Khi đặt một biến môi trường, bạn phải rõ ràng rằng nó là một biến môi trường bằng cách sử dụng $ Env: ký hiệu:

PS Env:/> $Env:FOO = "hello world"
PS Env:/> Get-ChildItem FOO
hello world

Để thử nghiệm, hãy khởi chạy một phiên mới và truy cập vào biến bạn vừa tạo. Tuy nhiên, vì biến là một biến môi trường, bạn phải thêm nó bằng $ Env: :

PS Env:/> pwsh
PS c:\> $Env.FOO
hello world

Mặc dù bạn đã cung cấp một biến cho các quy trình con, nó vẫn chỉ là một biến tạm thời. Nó hoạt động, bạn có thể xác minh rằng nó tồn tại, bạn có thể sử dụng nó từ bất kỳ quá trình nào, nhưng nó sẽ bị phá hủy khi trình bao tạo ra nó bị đóng.

Làm cách nào để bạn đặt các biến môi trường trong hồ sơ của mình?

Để buộc một biến môi trường tồn tại trong các phiên, bạn phải thêm biến đó vào hồ sơ PowerShell của mình, chẳng hạn như Người dùng hiện tại, Người dùng chung của bạn hồ sơ, nằm trong HOME / Documents / Profile.ps1 :

PS> Add-Content -Path $Profile.CurrentUserAllHosts -Value '$Env:FOO = "hello world"'

Với dòng này được thêm vào, bất kỳ phiên PowerShell nào được khởi chạy sẽ khởi chạy FOO biến môi trường và đặt giá trị của nó thành hello world .

Hiện có sáu cấu hình mặc định kiểm soát phiên PowerShell, vì vậy hãy tham khảo blog dành cho nhà phát triển của Microsoft để biết thêm thông tin.

Làm cách nào để bạn khám phá các biến môi trường mới?

Bạn có thể tạo và thao tác với các biến môi trường theo ý muốn, và một số ứng dụng làm được điều đó. Thực tế này có nghĩa là nhiều biến môi trường của bạn không được hầu hết các ứng dụng của bạn sử dụng và nếu bạn thêm các biến tùy ý của riêng mình thì một số biến có thể không được sử dụng.

Vì vậy, câu hỏi đặt ra là:Làm thế nào để bạn tìm ra những biến môi trường nào có ý nghĩa? Câu trả lời nằm trong tài liệu của ứng dụng.

Ví dụ:Python đề nghị thêm đường dẫn Python thích hợp vào Đường dẫn của bạn biến môi trường trong khi cài đặt. [Lưu ý:PATH?] Nếu bạn từ chối, bạn có thể tự đặt giá trị ngay bây giờ mà bạn biết cách sửa đổi các biến môi trường.

Điều này cũng đúng với bất kỳ ứng dụng nào bạn cài đặt:Trình cài đặt dự kiến ​​sẽ thêm các biến thích hợp vào môi trường của bạn, vì vậy bạn không bao giờ cần phải sửa đổi Env: thủ công. Nếu bạn đang phát triển một ứng dụng, thì trình cài đặt của bạn cũng phải làm như vậy đối với người dùng của bạn.

Để khám phá các biến quan trọng cho các ứng dụng riêng lẻ, hãy tham khảo tài liệu dành cho người dùng và nhà phát triển của họ.