Trong các biến môi trường của hệ thống dựa trên Linux và Unix là một tập hợp các giá trị động được đặt tên, được lưu trữ trong hệ thống được sử dụng bởi các ứng dụng được khởi chạy trong shell hoặc subshells. Nói một cách đơn giản, một biến môi trường là một biến có tên và giá trị liên quan.
Biến môi trường cho phép bạn tùy chỉnh cách hệ thống hoạt động và hoạt động của các ứng dụng trên hệ thống. Ví dụ: biến môi trường có thể lưu trữ thông tin về trình soạn thảo văn bản hoặc trình duyệt mặc định , đường dẫn đến các tệp thực thi hoặc cài đặt bố cục bàn phím và hệ thống.
Trong hướng dẫn này, tôi sẽ giải thích để đọc và thiết lập các biến môi trường và shell.
Biến môi trường và biến Shell
Các biến có định dạng sau:
KEY=value KEY="Some other value" KEY=value1:value2
- Tên của các biến là trường hợp đặc biệt. Theo quy ước, các biến môi trường nên có tên UPPER CASE.
- Khi gán nhiều giá trị cho biến chúng phải được phân tách bằng
:
ký tự dấu hai chấm . - Không có khoảng trắng xung quanh
=
biểu tượng bằng .
Các biến có thể được phân loại thành hai loại chính, biến môi trường và biến shell.
Biến môi trường
là các biến có sẵn trên toàn hệ thống và được kế thừa bởi tất cả các tiến trình và shell được sinh ra.
Các biến shell
là các biến chỉ áp dụng cho session shell hiện tại. Mỗi shell như zsh
và bash
, có tập hợp các biến shell bên trong riêng.
Có một số lệnh có sẵn cho phép bạn liệt kê và đặt các biến môi trường trong Linux:
env
– Lệnh cho phép bạn chạy một chương trình khác trong môi trường tùy chỉnh mà không cần sửa đổi chương trình hiện tại. Khi được sử dụng mà không có đối số, nó sẽ in một danh sách các biến môi trường hiện tại.printenv
– Lệnh in tất cả hoặc các biến môi trường được chỉ định.set
– Lệnh dùng để set hoặc unset biến shell. Khi được sử dụng mà không có đối số, nó sẽ in một danh sách tất cả các biến bao gồm các biến môi trường và shell và các hàm shell.unset
– Lệnh xóa các biến shell và môi trường.export
– Lệnh đặt các biến môi trường.
Liệt kê các biến môi trường
Lệnh được sử dụng nhiều nhất để hiển thị các biến môi trường là printenv
. Nếu tên của biến được truyền dưới dạng đối số cho lệnh, chỉ giá trị của biến đó được hiển thị. Nếu không có đối số nào được chỉ định, hãy printenv
in danh sách tất cả các biến môi trường, một biến trên mỗi dòng.
Ví dụ: để hiển thị giá trị của biến môi trường HOME
bạn sẽ chạy:
printenv HOME
Đầu ra sẽ in đường dẫn của người dùng hiện đang đăng nhập:
/home/linuxize
Bạn cũng có thể truyền nhiều hơn một đối số cho lệnh printenv
:
printenv LANG PWD
en_US /home/linuxize
Nếu bạn chạy lệnh printenv
hoặc env
không có bất kỳ đối số nào, nó sẽ hiển thị danh sách tất cả các biến môi trường:
printenv
Đầu ra sẽ trông giống như thế này:
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35;... LESSCLOSE=/usr/bin/lesspipe %s %s LANG=en_US S_COLORS=auto XDG_SESSION_ID=5 USER=linuxize PWD=/home/linuxize HOME=/home/linuxize SSH_CLIENT=192.168.121.1 34422 22 XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop SSH_TTY=/dev/pts/0 MAIL=/var/mail/linuxize TERM=xterm-256color SHELL=/bin/bash SHLVL=1 LANGUAGE=en_US: LOGNAME=linuxize XDG_RUNTIME_DIR=/run/user/1000 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin LESSOPEN=| /usr/bin/lesspipe %s _=/usr/bin/printenv
Dưới đây là một số biến môi trường phổ biến nhất:
USER
– Người dùng đăng nhập hiện tại.HOME
– Thư mục home của người dùng hiện tại.EDITOR
– Trình chỉnh sửa tập tin mặc định sẽ được sử dụng. Đây là trình chỉnh sửa sẽ được sử dụng khi bạn nhậpedit
vào terminal của bạn.SHELL
– Đường dẫn của shell hiện tại của người dùng, chẳng hạn như bash hoặc zsh.LOGNAME
– Tên của người dùng hiện tại.PATH– Một danh sách các thư mục sẽ được tìm kiếm khi thực hiện các lệnh. Khi bạn chạy một lệnh, hệ thống sẽ tìm kiếm các thư mục theo thứ tự này và sử dụng tệp thực thi đầu tiên được tìm thấy.
LANG
– Các cài đặt local hiện tại.TERM
– Terminal emulation hiện tại.MAIL
– Vị trí lưu trữ thư của người dùng hiện tại.
Các lệnh printenv
và env
chỉ in các biến môi trường. Nếu bạn muốn nhận danh sách tất cả các biến, bao gồm môi trường, shell và biến và hàm shell, bạn có thể sử dụng lệnh set
:
set
#Output BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=()
Lệnh sẽ hiển thị một danh sách lớn tất cả các biến để bạn có thể muốn dẫn đầu ra cho lệnh less
.
set | less
Bạn cũng có thể sử dụng lệnh echo để in một biến shell. Ví dụ: để in giá trị của biến BASH_VERSION
bạn sẽ chạy:
echo $BASH_VERSION
#Output 4.4.19(1)-release
Cài đặt biến môi trường
Để minh họa rõ hơn sự khác biệt giữa các biến Shell và Môi trường, chúng ta sẽ bắt đầu bằng cách đặt Biến Shell và sau đó chuyển sang các biến Môi trường.
Để tạo một biến shell mới với tên MY_VAR
và giá trị hocdevops
chỉ cần gõ:
MY_VAR='hocdevops'
Bạn có thể xác minh rằng biến được đặt bằng cách sử dụng một trong hai cách echo $MY_VAR
lọc đầu ra của lệnh set bằng grep set | grep MY_VAR
:
echo $MY_VAR
#Output hocdevops
Sử dụng lệnh printenv
để kiểm tra xem biến này có phải là biến môi trường hay không:
printenv MY_VAR
Đầu ra sẽ trống để cho chúng ta biết rằng biến không phải là biến môi trường.
Bạn cũng có thể thử in biến trong shell phụ và bạn sẽ nhận được một đầu ra trống.
bash -c 'echo $MY_VAR'
Lệnh export
được sử dụng để thiết lập các biến môi trường.
Để tạo một biến môi trường, chỉ cần xuất biến shell thành biến môi trường:
export MY_VAR
Bạn có thể kiểm tra điều này bằng cách chạy:
printenv MY_VAR
#Output hocdevops
Nếu bạn cố in biến trong shell lần này, bạn sẽ nhận được tên biến được in trên terminal của mình:
bash -c 'echo $MY_VAR'
#Output hocdevops
Bạn cũng có thể đặt các biến môi trường trong một dòng duy nhất:
export MY_NEW_VAR="My New Var"
Biến môi trường được tạo theo cách này chỉ có sẵn trong phiên hiện tại. Nếu bạn mở một shell mới hoặc nếu bạn đăng xuất, tất cả các biến sẽ bị mất.
Cố định biến môi trường
Để dùng các biến môi trường liên tục trong các phiên, bạn cần xác định các biến đó trong các tệp cấu hình bash. Trong hầu hết các bản phân phối Linux khi bạn bắt đầu một phiên mới, các biến môi trường được đọc từ các tệp sau:
/etc/environment
– Sử dụng tệp này để thiết lập các biến môi trường toàn hệ thống. Các biến trong tệp này được đặt theo định dạng sau:
FOO=bar VAR_TEST="Test Var"
/etc/profile
– Các biến được đặt trong tệp này được tải bất cứ khi nào một shell đăng nhập bash được nhập. Khi khai báo các biến môi trường trong tệp này, bạn cần sử dụng lệnhexport
:
export JAVA_HOME="/path/to/java/home" export PATH=$PATH:$JAVA_HOME/bin
- Mỗi tệp người dùng cấu hình shell cụ thể. Ví dụ: nếu bạn đang sử dụng Bash, bạn có thể khai báo các biến trong
~/.bashrc
:
export PATH="$HOME/bin:$PATH"
- Để tải các biến môi trường mới vào phiên shell hiện tại, hãy sử dụng lệnh
source
:
source ~/.bashrc
Phần kết luận
Trong hướng dẫn này, tôi đã chỉ cho bạn cách đặt và liệt kê các biến môi trường và shell.
Hãy để lại nhận xét nếu bạn có bất kỳ câu hỏi nào.