openplanning

Thiết lập biến môi trường trên Mac OS

  1. Liệt kê các biến môi trường
  2. Kiểm tra một biến môi trường cụ thể
  3. Thiết lập các biến môi trường tạm thời
  4. Thiết lập các biến môi trường vĩnh cửu cho người dùng cụ thể
  5. Thiết lập biến môi trường vĩnh cửu toàn hệ thống
Các biến môi trường là các biến toàn cục được sử dụng bởi người dùng và các tiến trình trong hệ điều hành. Trong MacOS, có hai loại biến môi trường là biến môi trường tạm thời và biến môi trường vĩnh cửu (permanent).
Trong bài viết này tôi sẽ hướng dẫn bạn xem, thêm, cập nhập và xoá các biến môi trường trong MacOS.

1. Liệt kê các biến môi trường

Để liệt kê các biến môi trường hiện thời sử dụng lệnh dưới đây trong Terminal:
printenv
Kết quả bạn nhận được:
karakol@karakols-MBP ~ % printenv
TMPDIR=/var/folders/_r/1pd7_2vs4hs1g9kc6hdj171w0000gn/T/
__CFBundleIdentifier=com.apple.Terminal
XPC_FLAGS=0x0
TERM=xterm-256color
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.0NAIN66XMc/Listeners
XPC_SERVICE_NAME=0
TERM_PROGRAM=Apple_Terminal
TERM_PROGRAM_VERSION=444
TERM_SESSION_ID=2DDF4F68-006D-41D1-9DC2-D72AB013CA29
SHELL=/bin/zsh
HOME=/Users/karakol
LOGNAME=karakol
USER=karakol
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
SHLVL=1
PWD=/Users/karakol
OLDPWD=/Users/karakol
LC_CTYPE=UTF-8
_=/usr/bin/printenv

2. Kiểm tra một biến môi trường cụ thể

Nếu bạn muốn hiển thị giá trị của một biến môi trường cụ thể chỉ cần sử dụng lệnh "echo":
echo $[variable name]
Ví dụ:
echo $PATH
Output:
karakol@karakols-MBP ~ % echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

3. Thiết lập các biến môi trường tạm thời

Biến môi trường tạm thời được được thiết lập trong một phiên làm việc và tồn tại trong phiên làm việc đó, biến môi trường này sẽ bị loại bỏ sau khi phiên làm việc kết thúc.
Khi bạn mở Terminal và tạo một biến môi trường, biến môi trường này chỉ tồn tại trong cửa sổ Terminal này, và không chia sẻ với các cửa sổ Terminal khác. Biến môi trường tạm thời có ích để bạn không phải gõ cùng một giá trị nhiều lần khi làm việc với Terminal.
export [variable_name]=[variable_value]
Ví dụ, thiết lập một biến môi trường, và xem giá trị của nó:
karakol@karakols-MBP ~ % export greeting="Hello Everybody"
karakol@karakols-MBP ~ % echo $greeting
Hello Everybody
karakol@karakols-MBP ~ % export greeting=Hi
karakol@karakols-MBP ~ % echo $greeting
Hi
Ví dụ, thêm đường dẫn một thư mục vào biến môi trường PATH hiện tại của hệ thống.
karakol@karakols-MBP ~ % export PATH=/Users/test/test_folder:$PATH
karakol@karakols-MBP ~ % echo $PATH
/Users/test/test_folder:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

4. Thiết lập các biến môi trường vĩnh cửu cho người dùng cụ thể

Các biến môi trường vĩnh cửu cho người dùng cụ thể được lưu trữ trong file. Ví trí của file này tuỳ thuộc vào phiên bản Mac OS mà bạn đang sử dụng.
Với MacOS phiên bản cũ hơn Mac Catalina (10.15):
File
(Mac < 10.15)
Description
~/.bashrc
Biến môi trường được thiết lập trong file này được sử dụng cho các Shells không đăng nhập, chẳng hạn khi bạn mở một Terminal mới.
~/.bash_profile
Biến môi trường được thiết lập trong file này được sử dụng cho các Shells có đăng nhập, chẳng hạn như SSH.
Trong hầu hết các trường hợp, nên thêm các biến môi trường vào file này, vì nó đảm bảo các biến có sẵn cho cả Shells đăng nhập và không đăng nhập.
Với Mac Catalina (10.15) hoặc mới hơn.
File
(Mac >= 10.15)
Description
~/.zshrc
Biến môi trường được thiết lập trong file này được sử dụng cho các Shells không đăng nhập, chẳng hạn khi bạn mở một Terminal mới.
~/.zprofile
Biến môi trường được thiết lập trong file này được sử dụng cho các Shells có đăng nhập, chẳng hạn như SSH.
Trong hầu hết các trường hợp, nên thêm các biến môi trường vào file này, vì nó đảm bảo các biến có sẵn cho cả Shells đăng nhập và không đăng nhập.
Bạn có thể kiểm tra phiên bản MacOS của bạn.
  • Apple Icon > About This Mac
Có lẽ hầu hết mọi người thời điểm này đang sử dụng MacOS phiên bản mới hơn 10.15.
Chạy lệnh sau để kiểm tra vị trí của file .zprofile:
~/.zprofile
Có thể file này không tồn tại, và bạn sẽ nhận được thông báo như sau:
karakol@karakols-MBP ~ % ~/.zprofile
zsh: no such file or directory: /Users/karakol/.zprofile
Nếu file trên không tồn tại bạn chỉ cần tạo ra nó:
touch ~/.zprofile
Sau đó mở file này để sửa đổi nội dung.
sudo nano ~/.zprofile
  • Ctrl + O --> Save
  • Ctrl + X --> Exit
Chú ý: Trong một vài phiên bản Mac OS, các biến môi trường trong file không được đọc mỗi khi bạn bắt đầu một phiên làm việc mới. Trong trường hợp đó, mỗi khi bắt đầu một phiên làm việc mới bạn phải đọc file này một cách thủ công:
source ~/.zprofile
In ra giá trị biến môi trường mà bạn vừa thiết lập:
karakol@karakols-MBP ~ % source ~/.zprofile
karakol@karakols-MBP ~ % echo $greeting    
Hello

5. Thiết lập biến môi trường vĩnh cửu toàn hệ thống

Các biến môi trường vĩnh cửu toàn hệ thống được sử dụng cho tất cả các người dùng trên MacOS, chúng được thiết lập trên một file (tuỳ thuộc vào phiên bản hệ điều hành).
Với MacOS < Mac Catalina (10.15):
File
(Mac < 10.15)
Description
/etc/bashrc
Biến môi trường được thiết lập trong file này được sử dụng cho các Shells không đăng nhập, chẳng hạn khi bạn mở một Terminal mới.
/etc/profile
Biến môi trường được thiết lập trong file này được sử dụng cho các Shells có đăng nhập, chẳng hạn như SSH.
Trong hầu hết các trường hợp, nên thiết lập các biến môi trường trong file này, vì nó đảm bảo các biến có sẵn cho cả Shells đăng nhập và không đăng nhập.
Với Mac Catalina (10.15) hoặc mới hơn
File
(Mac >= 10.15)
Description
/etc/zshrc
Biến môi trường được thiết lập trong file này được sử dụng cho các Shells không đăng nhập, chẳng hạn khi bạn mở một Terminal mới.
/etc/zprofile
Biến môi trường được thiết lập trong file này được sử dụng cho các Shells có đăng nhập, chẳng hạn như SSH.
Trong hầu hết các trường hợp, nên thiết lập các biến môi trường trong file này, vì nó đảm bảo các biến có sẵn cho cả Shells đăng nhập và không đăng nhập.
Trên Terminal, sử dụng lệnh vim hoặc nano để sửa nội dung file một cách trực tiếp:
sudo nano /etc/zprofile
  • Ctrl + O --> Save
  • Ctrl + X --> Exit
Làm cho các thay đổi có tác dụng ngay lập tức:
source /etc/zprofile