Cài đặt, tạo biến môi trường trên Ubuntu, biến $PATH

Cài đặt, tạo biến môi trường trên Ubuntu, biến $PATH

1. Tạo biến cho shell hiện tại

VARNAME="my value"

Với cách này thì biến được tạo chỉ có tác dụng trong cửa sổ shell hiện tại:

Ví dụ mình tạo biến VAR1=hello rồi sau đấy in biến VAR1 ra:

Tạo biến cho shell hiện tại trên ubuntu

2. Tạo biến môi trường cho tất cả các process bắt đầu từ shell hiện tại

export VARNAME="my value"

Ví dụ:

Tạo biến môi trường cho tất cả các process bắt đầu từ shell hiện tại trên ubuntu

3. Tạo biến môi trường vĩnh viễn trên Ubuntu

Với 2 cách tạo biến môi trường ở trên, chúng chỉ có tác dụng trong 1 phiên làm việc, sau khi logout hoặc khởi động lại máy tính thì nó sẽ mất tác dụng.

Trong các trường hợp khác ví dụ như cài đặt biến môi trường cho java (JAVA_HOME) ta không nên làm theo cách trên vì mỗi lần khởi động lại máy sẽ phải tạo lại biến môi trường một lần, hơn nữa nhiều phần mềm khi cài đặt yêu cầu phải có java thì chúng sẽ tham chiếu tới biến JAVA_HOME nên cần phải cố định biến JAVA_HOME cho tất cả người dùng, tất cả các process trong mọi phiên sử dụng.

Để tạo biến môi trường vĩnh viễn trên Ubuntu ta cần thêm nó vào /etc/environment

B1: Mở /etc/environment

sudo -H gedit /etc/environment

(Ở đây mình mở bằng giao diện, các bạn có thể thay -H gedit bằng vim hoặc nano để mở file trên terminal)

B2: Thêm biến môi trường vào file vừa mở

VARNAME="my value"

Không sử dụng từ khóa export nhé

Lưu lại file sau đó logout và login lại hoặc khởi động lại máy tính.

Ví dụ tạo biến môi trường cho java trên Ubuntu:
Cài đặt, tạo biến môi trường trên Ubuntu, biến $PATH Kiểm tra biến JAVA_HOME vừa thiết lập

 4. Biến $PATH

Biến $PATH là một biến môi trường mặc định trên linux (ubuntu). Nó được sử dụng để shell (terminal) tìm kiếm các file executable.

Ví dụ khi cài đặt java (trên linux hoặc window), bạn tạo biến JAVA_HOME=/usr/lib/jvm/java-8-oracle

Sau đấy lại thêm biến JAVA_HOME vào biến $PATH

PATH="$JAVA_HOME/bin:$PATH"

khi bạn chạy lệnh javac -version thì nó sẽ tìm tất cả các file executable ở trong tất cả các folder được liệt kê trong biến $PATH xem có file javac không, nên bản chất khi chạy lệnh trên chính là chạy file javac trong folder /usr/lib/jvm/java-8-oracle/bin với tham số là -version

Để xem các folder trong $PATH ta có thể dùng lệnh echo: echo $PATH

Kết quả:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Để tạo biến $PATH, thêm giá trị / folder vào biến $PATH ta làm như sau:

Mở file ~/.profile

sudo nano ~/.profile

Sửa giá trị $PATH thành:

PATH="$HOME/bin:$HOME/.local/bin:{whatever_path_you_need_to_add}:$PATH"
Ví dụ mình muốn thêm thư mục bin của java thì mình thay whatever_path_you_need_to_add thành $JAVA_HOME/bin hoặc /usr/lib/jvm/java-8-oracle/bin sau đó lưu lại.
Trường hợp file ~/.profile chưa tồn tại hoặc đang trống thì bạn tạo mới file đó theo mẫu dưới đây:
if [ -n "$BASH_VERSION" ]; then
   # include .bashrc if it exists
   if [ -f "$HOME/.bashrc" ]; then
      . "$HOME/.bashrc"
   fi
fi

# set PATH so it includes user's private bin directories

PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"

 

Okay, Done!
References:
stackjava.com