Bài này sẽ giới thiệu về biến môi trường trên Linux về cách liệt kê các biến môi trường đang có trên hệ thống cũng như cách cấu hình biến môi trường và các biến môi trường đặc biệt trên Linux như $PATH, $PS1. Biến môi trường là biến được sử dụng chung cho cả hệ điều hành và các ứng dụng. Nó được tạo ra để dùng chung chia sẻ giữa hệ thống và các ứng dụng. Biến môi trường được dùng khá nhiều trong môi trường Container, đặc biệt với Docker để cung cấp thông tin cho ứng dụng bên trong, ví dụ thông tin kết nối database.
1. Biến môi trường là gì?
Biến môi trường là các đại lượng có các giá trị cụ thể. Một số biến môi trường được cung cấp các giá trị đặt trước của hệ thống và các biến khác được đặt trực tiếp bởi người dùng, tại dòng lệnh hoặc trong khi khởi động các tập lệnh khác.
Biến môi trường là một chuỗi ký tự chứa thông tin được sử dụng bởi một hoặc nhiều ứng dụng.
1.1. Xem các biến môi trường hiện có
Một số cách để xem các giá trị của các biến môi trường hiện được đặt:
set
Hoặc
env
Hoặc
export
Tùy thuộc vào trạng thái hệ thống của bạn, set
có thể in ra nhiều dòng hơn hai lệnh còn lại.
2. Cách thiết lập biến môi trường trên Linux
Các biến môi trường được tạo trong một tập lệnh chỉ có sẵn. Các tiến trình con sẽ không có quyền truy cập vào các giá trị đã được đặt hoặc sửa đổi. Cho phép các tiến trình con để xem các giá trị yêu cầu sử dụng lệnh xuất.
Tác dụng | Lệnh |
---|---|
Hiển thị giá trị của một biến cụ thể | echo $SHELL |
Xuất một giá trị biến mới | Nhập vào dòng export VARIABLE=value hoặc VARIABLE=value hoặc export VARIABLE |
Thêm một biến vĩnh viễn | Chỉnh file $HOME/.bashrc và thêm vào dòng export VARIABLE=value . Sau đó source ~/.bashrc hoặc ~/.bashrc hoặc chỉ nhập một lệnh bash. |
3. Biến môi trường “$HOME”
HOME là một biến môi trường đại diện cho thư mục home của người dùng. Lệnh cd
không có đối số sẽ thay đổi thư mục làm việc hiện tại thành giá trị của HOME.
Chú ý: Ký tự dấu ngã ( ~ ) thường được sử dụng làm chữ tắt cho $HOME. Nên lệnh cd $HOME và cd ~ hoàn toàn giống nhau.
Để chứng minh điều này là đúng chúng ta thực hiện ví dụ sau:
Dùng lệnh echo
để hiển thị giá trị của biến môi trường $HOME tại thư mục bất kì.
[root@localhost tmp]# echo $HOME
/root
Tiếp theo dùng lệnh cd $HOME
để chuyển từ thư mục hiện tại về thư mục home.
[root@localhost tmp]# cd $HOME
[root@localhost ~]# pwd
/root
Quay lại thư mục trước và dùng lệnh cd ~
để trở về thư mục home.
[root@localhost ~]# cd -
/tmp
[root@localhost tmp]# pwd
/tmp
[root@localhost tmp]# cd ~
[root@localhost ~]# pwd
/root
4. Biến môi trường “$PATH”
4.1. Khái niệm biến môi trường "$PATH"
PATH là một danh sách các đường dẫn được quét khi lệnh được đưa ra để tìm chương trình hoặc tập lệnh thích hợp để chạy. Mỗi thư mục trong đường dẫn được phân cách bằng dấu hai chấm. Tên thư mục null hoặc ./ cho biết thư mục hiện tại.
Ví dụ:
:path1:path2
path1::path2
Ví dụ trên :path1:path2
có một thư mục rỗng trước dấu hai chấm đầu tiên ( : ). Còn path1 :: path2
có một thư mục null giữa path1 và path2 .
4.2. Ví dụ về cấu hình biến môi trường “$PATH”
Thêm một thư mục /bin vào biến $PATH (thêm vào đường dẫn của bạn)
export PATH=$PATH:$HOME/bin
Kiểm tra xem có đường dẫn /bin trong biến môi trường PATH:
echo $PATH
Ví dụ tạo biến môi trường $PATH:
5. Biến môi trường “$SHELL”
Biến môi trường SHELL trỏ đến vỏ lệnh mặc định của người dùng (chương trình đang xử lý bất cứ điều gì bạn gõ trong cửa sổ lệnh, thường là bash) và chứa tên đường dẫn đầy đủ đến shell:
[root@localhost ~]# echo $SHELL
/bin/bash
6. Biến môi trường “$PS1”
6.1. Khái niệm biến môi trường "$PS1"
PS (Prompt Statement) sử dụng để tùy chỉnh chuỗi nhắc của bạn trong cửa sổ đầu cuối để hiển thị thông tin bạn muốn.
[root@localhost etc]# echo $PS1
[\u@\h \W]\$
PS1 là biến chính điều khiển dấu nhắc dòng lệnh của bạn. Các ký tự đặc biệt trong PS1 :
\u
: Tên người dùng\h
: Tên máy chủ\w
: Thư mục làm việc hiện tại\!
: Số lịch sử của lệnh này\d
: Ngày
6.2. Ví dụ về cấu hình biến môi trường “$PS1”
Ví dụ tạo biến môi trường $PS1:
Hiển thị giá trị hiện tại của biến môi trường "$PS1"
echo $PS1
Cấu hình biến $PS1 hiển thị tên user, hostname, thư mục hiện tại:
export PS1='\u@\h:\w$ '
Cấu hình biến $PS1 về như trước:
export PS1='$ '
Cách thực hiện tốt hơn là lưu lại biến $PS1 cũ và sau đó khôi phục:
OLD_PS1=$PS1
Thay đổi lời nhắc:
PS1=$OLD_PS1