Trong các biến môi trường hệ thống dựa trên Linux và Unix là một tập hợp các giá trị có tên động, đượ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 shell phụ. 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.

Các biến môi trường cho phép bạn tùy chỉnh cách hệ thống hoạt động và hành vi 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 có thể thực thi hoặc thiết đặt bố trí cục bộ và bàn phím hệ thống.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu giải thích để đọc và đặt các biến môi trường và shell.

Biến môi trường và biến shell

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 nhạy cảm. 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 tách ra bởi dấu :.
  • Không có khoảng trắng sau dấu =.

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 thừa hưởng bởi tất cả các quá trình và shell con được sinh ra.

Biến shell là các biến chỉ áp dụng cho phiên bản shell hiện tại. Mỗi shell như zsh và bash , có bộ 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 – Các bộ lệnh hoặc bỏ các 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.

Danh sách 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 chuyển như một đối số cho lệnh, chỉ có giá trị của biến đó được hiển thị. Nếu không có đối số nào được chỉ định, hãy in danh sách tất cả các biến môi trường, một biến cho 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/hocdevops

Bạn cũng có thể chuyển nhiều hơn một đối số cho lệnh printenv:

printenv LANG PWD
Output:
en_US
/home/hocdevops

Nếu bạn chạy lệnh hoặc lệnh mà 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 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=hocdevop
PWD=/home/hocdevop
HOME=/home/hocdevop
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/hocdevop
TERM=xterm-256color
SHELL=/bin/bash
SHLVL=1
LANGUAGE=en_US:
LOGNAME=hocdevop
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 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ập vào terminal của mình.
  • SHELL – Đường đi của shell của người dùng hiện tại, chẳng hạn như bash hoặc zsh.
  • LOGNAME – Tên của người dùng hiện tại.
  • PATH – Danh sách các thư mục cần tìm kiếm khi thực hiện lệnh. Khi bạn chạy lệnh, hệ thống sẽ tìm kiếm các thư mục đó theo thứ tự này và sử dụng thực thi đầu tiên được tìm thấy.
  • LANG – Cài đặt cục bộ hiện tại.
  • TERM – Terminal emulation hiện tại.
  • MAIL – Vị trí nơi lưu trữ thư của người dùng hiện tại.

Và các lệnh chỉ in các biến môi trường. Nếu bạn muốn có được một danh sách tất cả các biến, bao gồm môi trường, shell và biến, và các hàm shell, bạn có thể sử dụng lệnh:

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 ống đầu ra đến 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 bạn sẽ chạy:

echo $BASH_VERSION
4.4.19(1)-release

Thiết đặ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à Environment, chúng ta sẽ bắt đầu với việc đặt Các 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 và giá trị chỉ cần nhập:

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 lọc đầu ra của lệnh đã đặt bằng grep:

echo $MY_VAR
Hocdevops

Sử dụng lệnh để 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 rỗ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 một shell mới 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 để đặt các biến Môi trường.

Để tạo biến môi trường chỉ cần xuất biến shell dưới dạng 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ố gắng in biến trong một shell mới lần này, bạn sẽ nhận được tên biến được in trên thiết bị đầu cuối 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.

Biến môi trường liên tục

Để làm cho các biến Môi trường liên tục, 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 ở đị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 dùng lệnh export:
export JAVA_HOME="/path/to/java/home"
export PATH=$PATH:$JAVA_HOME/bin
  • Mỗi người dùng shell các tệp cấu hình 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 dùng lệnh source:

source ~/.bashrc

Kết thúc

Trong hướng dẫn này, tôi đã chỉ cho bạn cách thiết lập và liệt kê môi trường và biến shell.

Hãy để lại bình luận nếu bạn có bất kỳ câu hỏi nào.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments