Hiểu về biến môi trường trên Linux và cách sử dụng

Trong bài này chúng ta sẽ tìm hiểu khái niệm về biến môi trường trên Linux, đây là bài rất quan trọng vì nó sẽ giúp bạn có thể cấu hình môi trường trên Linux.

Bài trước chúng ta đã tìm hiểu quyền truy cập file và thư mục, trong bài này mình sẽ trình bày thế nào là biến môi trường trên Linux, sau đó chúng ta sẽ lần lượt tìm hiểu các biến môi trường quan trọng và cách cài đặt chúng.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Biến môi trường trong Linux là gì?

Khi làm việc trên máy tính chúng ta cần những thông tin như tên phiên bản hệ điều hành (HĐH) đang chạy, tên thư mục home, thư mục chứa lệnh chương trình …

Một khái niệm quan trọng trên linux đó là môi trường (environment) được định nghĩa qua các biến môi trường. Một số biến được đặt bởi hệ thống, số khác do bạn đặt, hoặc set bởi shell (các lệnh) hay từ một chương trình nào đó.

Một biến môi trường có tên là một dãy chữ cái và nhận một giá trị nhất định, giá trị này có thể là số, chữ, tên file, thiết bị (device) hay một kiểu dữ liệu nào đó, đặc biệt là các biến không được trùng nhau.

Trên Windows cũng có khái niệm biến môi trường. Bạn chuột phải Computer > Properties > Advanced System Settings > Environment Variables. Có system và user variables.

freetuts-bien-moi-truong

Trên Window: Muốn xem biến trong command prompt thì bạn bật CMD lên và gõ lệnh echo %PATH%:

echo %PATH%

C:\Program Files (x86)\Git\git-cheetah\..\bin;C:\Program Files (x86)\Git\git-che

etah\..\bin;C:\imagemagick\ImageMagick-6.7.7-Q16;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system
32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.
0\;C:\Program Files (x86)\Git\cmd;C:\HashiCorp\Vagrant\bin;D:\Soft\System\Bash\s
hell2;C:\xampp\php;C:\ProgramData\ComposerSetup\bin;C:\Program Files\nodejs\;C:\
Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\I
ntel\Intel(R) Management Engine Components\IPT;C:\Program Files\TortoiseSVN\bin

// set biến
C:\Users\DungNV>SET MAGICK_HOME=C:/imagemagick

C:\Users\DungNV>SET MAGICK_CONFIGURE_PATH=%MAGICK_HOME%/config

C:\Users\DungNV>SET MAGICK_CODER_FILTER_PATH=%MAGICK_HOME%/modules/filters

Trên Linux: Bạn có thể set và get ra biến môi trường như sau:

TEST=”Linux programming”
echo $TEST
Linux programming

Các bạn để ý khi khai báo biến TEST chúng ta không dùng dấu $, dấu $ đầu dòng là ký hiệu của bash trên terminal. Khi truy cập giá trị biến TEST thì cần thêm dấu $ thành echo $TEST. Những biến khai báo trực tiếp trên terminal kiểu này sẽ không giữ được khi bạn thoát khỏi Terminal.

2. Danh sách biến môi trường trong Linux và cách cài đặt

Tiếp theo mình trình bày một số khái niệm liên quan đến biến môi trường, ý nghĩa các biến môi trường hay dùng và cách cài đặt chúng.

Shell (hệ vỏ) là phần giao diện dịch các lệnh của người dùng gõ vào thành các lệnh cho nhân hệ điều hành thực thi rồi trả lại kết quả. Trong bài đầu về Linux mình có mô tả về shell như là lớp trên của hạt nhân. Khi login vào hệ thống shell sẽ thực thi việc khởi tạo các biến môi trường. Việc này thường là đọc các file cấu hình như sau:

/etc/environment         → lưu các biến môi trường mức hệ thống.
~/.profile 
~/.bashrc hay ~/.bash_profile 

→ lưu các biến môi trường cho người dùng đang login, các file này nằm trong mục home của bạn. Khi đọc file .profile hay .bashrc … hệ thống có thể sẽ load tiếp các file khác được định nghĩa trong đó.

Các file trên là ví dụ shell bash trên Ubuntu. Cũng tùy loại shell và phiên bản Linux. Ví dụ trên centOS thì các file khởi tạo biến môi trường là /etc/profile, các file trong mục /etc/profile.d/

Muốn xem shell nào được load khi các bạn login thì truy cập file /etc/passwd.

Ví dụ mình xem nickfarrow lúc login sẽ dùng shell gì thì làm như sau:

cat /etc/passwd |grep nickfarrow 
nickfarrow:x:1000:1000:nickfarrow,,,:/home/nickfarrow:/bin/bash

Một số user khác và shell khi login:

speech-dispatcher:x:111:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh 
hplip:x:112:7:HPLIP system user,,,:/var/run/hplip:/bin/false 
saned:x:113:123::/home/saned:/bin/false 
evanclark:x:1001:1001::/home/evanclark/:/bin/sh 
sshd:x:119:65534::/var/run/sshd:/usr/sbin/nologin

Để ý tới phần cuối cùng tách bởi dấu “:”, shell có thể là bash hoặc sh, false nghĩa là user này không có quyền chạy shell nào cả.

Đây là các biến hệ thống trong /etc/environment máy mình (chỉ có mỗi PATH và JAVA_HOME) như sau:

lanthuong:psi$ cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-i386

File /etc/environment lưu các biến toàn cục (global) quy định:

  • Loại shell bạn sử dụng
  • Các thư mục chứa lệnh commands và các biến quy định cách sử dụng, giao diện cửa sổ lệnh (terminal). Shell có thể là bash, sh hay ksh.

Biến $PATH

Biến PATH cho thấy đường dẫn tới các thư mục chứa câu lệnh (chương trình) để chạy khi bạn gõ trên terminal, các mục cách nhau dấu “:” ví dụ /usr/local/sbin; /usr/local/bin...

Ví dụ khi bạn cài đặt phần mềm ffmpeg trên Ubuntu (thư viện chuyên chỉnh sửa video, audio …), hay khi các bạn cài phần mềm imagemagick trên Linux thì các chương trình của ffmpeg, imagemagick sẽ được lưu ở mục /usr/local/bin hoặc là ở /sbin

Với biến PATH như trên thì bạn không cần biết ffmpeg, imagick cài ở đâu, mỗi khi bạn gõ lệnh ffmpeg hay convert (của imagick) trên terminal thì hệ thống tự biết tìm đến mục chứa nó để chạy.

Muốn hiện đường dẫn tuyệt đối của một lệnh thì bạn gõ lệnh whereis:

whereis ffmpeg
ffmpeg: /usr/local/bin/ffmpeg

Muốn hiện hết các mục chứa chương trình (câu lệnh) thì bạn echo $PATH:

echo $PATH 
/usr/lib/jvm/java-7-openjdk-i386/bin:/home/nickfarrow/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/nickfarrow/Public/android-sdk-linux/tools:/home/nickfarrow/Public/android-sdk-linux/platform-tools:/home/nickfarrow/Public/android-ndk-r9d::/home/nickfarrow/D/DPublic/Google/google_appengine/

Như các bạn thấy trên đây, ngoài các mục bin ra thì còn rất nhiều mục mình định nghĩa riêng ở chỗ khác nữa. File /etc/environment chỉ khai báo các biến toàn cục cho mọi người dùng.

Các biến môi trường khác

* HOME đường dẫn tới thư mục home của người dùng hiện tại, để tiện lợi hơn bạn có thể thay bằng dấu ~ trong nhiều trường hợp.

* TERM (terminal)

echo $TERM
xterm      // khi login chế độ đồ họa (như X-Window)

echo $TERM
linux     // khi login chế độ lệnh (thường là remote ssh)

Để dễ hình dung bạn hay truy cập vào các chế độ lệnh khác nhau (virtual cotsole) bằng cách nhấn Ctrl+Alt+Fn, n = 1-> 6) là chế độ dòng lệnh, Fn = 7,8 là chế độ đồ họa, còn lại chưa dùng.

Trên máy ảo VBox bạn nhấn Right Ctrl + (Shift) + F1, F2 F3 ... để thay đổi chế độ terminal (mặc định Host key VirtualBox là Right Ctrl, nếu bạn setting khác đi thì nhấp phím đó).

* DISPLAY: số (mã) màn hình mặc định các ứng dụng đồ họa sẽ chạy trên đó.

Để dễ hình dung bạn so sánh Desktop Remote (TeamViewer hay ChromeRemote) với Remote command (SSH). Nếu bạn ssh vào máy tính của bạn và muốn mở chrome lên bạn có thể chạy lệnh sau:

export DISPLAY=:0 && /usr/bin/google-chrome https://freetuts.net

// ở đây máy mình DISPLAY=:0 có thể máy bạn là :1 :2 ... bạn thử bằng echo $DISPLAY

Lý do là khi remote ssh thì chế độ display mà bạn login sẽ không phải là cho các ứng dụng X-Window (hay X11), chỉ gõ lệnh input/output ra màn hình terminal. Muốn mở chương trình đồ họa như chrome bạn phải set lại DISPLAY cho nó = lệnh export rồi bật chrome lên.

Tóm lại, qua bài này các bạn đã tìm hiểu thế nào là biến môi trường và các biến môi trường hay gặp.

Việc thiết lập giá trị cho các biến môi trường khá đơn giản. Trên Linux các biến môi trường lưu trong mục home của người dùng: .bashrc, .bash_profile, .bash_aliasses, /etc/profile ... Biến môi trường quan trọng nhất là PATH, nó lưu vị trí các mục chứa chương trình chạy trên hệ thống, thường là /usr/bin /bin, /usr/local/bin /sbin

Cùng chuyên mục:

Cách dùng lệnh Users trong Linux để xem user đang online

Cách dùng lệnh Users trong Linux để xem user đang online

Nếu bạn đang là quản trị viên thì việc quản lý thông tin / xem…

Cách sử dụng lệnh Wall trong Linux

Cách sử dụng lệnh Wall trong Linux

Wall là một công cụ dòng lệnh giúp hiển thị thông báo đến tất cả…

Cách dùng lệnh Whereis trong Linux

Cách dùng lệnh Whereis trong Linux

Whereis là một tiện ích dòng lệnh command line, nó cho phép bạn tìm ..

Cách sử dụng lệnh Which trong Linux

Cách sử dụng lệnh Which trong Linux

Linux dùng lệnh which để xác định vị trí file thực thi của lệnh mà…

Cách sử dụng lệnh whoami trong Linux

Cách sử dụng lệnh whoami trong Linux

Giống như tên gọi của nó, lệnh whoami in tên người dùng đang chạy ...

Cách dùng lệnh zcat trong Linux

Cách dùng lệnh zcat trong Linux

Mặc dù tính năng nén file rất hữu ích vì nó giúp ta tiết kiệm…

Hiểu rõ hơn về chmod 777 trong Linux

Hiểu rõ hơn về chmod 777 trong Linux

Bạn đang xây dựng một website và sử dụng tính năng upload ...

Cách sử dụng lệnh tail trong Linux

Cách sử dụng lệnh tail trong Linux

Mặc định thì lệnh tail sẽ hiển thị 10 dòng cuối cùng của file, thông…

Cách sử dụng lệnh Head trong Linux

Cách sử dụng lệnh Head trong Linux

Trong quá trình quản trị dữ liệu trên Linux đôi khi bạn muốn xem nhanh…

Cách sử dụng lệnh Whatis trong Linux

Cách sử dụng lệnh Whatis trong Linux

Trong bài này chúng ta sẽ tìm hiểu lệnh whatis trong ...

Cách sử dụng lệnh kill trong Linux

Cách sử dụng lệnh kill trong Linux

Linux là một hệ điều hành rất nhanh nhưng không phải lúc nào nó không…

Cách dùng lệnh who trong Linux

Cách dùng lệnh who trong Linux

Who là một công cụ dòng lệnh command-line, được ...

Cách dùng lệnh basename trong Linux

Cách dùng lệnh basename trong Linux

basename là một tiện ích dòng lệnh (command line) dùng để lấy ...

Cách sử dụng lệnh gzip trên Linux

Cách sử dụng lệnh gzip trên Linux

Gzip là một trong những thuật toán nén file phổ biến nhất, nó cho phép…

Cách dùng lệnh wait trong Linux

Cách dùng lệnh wait trong Linux

Wait là lệnh dùng để đợi một thời gian cho tới khi công việc nào…

Cách dùng lệnh ping trong Linux

Cách dùng lệnh ping trong Linux

Lệnh ping là một trong những công cụ được sử dụng nhiều nhất để khắc…

Cách dùng lệnh sleep trong Linux

Cách dùng lệnh sleep trong Linux

sleep là một tiện ích command line cho phép lập trình viên ..

Các ví dụ học Bash Script trong Linux cơ bản nhất

Các ví dụ học Bash Script trong Linux cơ bản nhất

Bash Script đuọc xem là mã code lập trình trên Linux ...

Vòng lặp until trong Shell Script

Vòng lặp until trong Shell Script

Vòng lặp while trong Shell Script

Vòng lặp while trong Shell Script

Trong Linux script, vòng lặp while được sử dụng trong ...

Top