Cách Set và Liệt kê Biến Môi Trường (Environment Variables) trong Linux

By | 4 February, 2020
biến môi trường trong linux

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 printenvlệnh:

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ập edit 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ệnhset:

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ệnh export:
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.

Leave a Reply

avatar
  Subscribe  
Notify of