Các lệnh Linux cơ bản (Phần 7 – Environment)

Tiếp nối chủ để các câu lệnh Linux cơ bản từ phần trước, ở phần 7 này sẽ chỉ là một bài viết ngắn gọn trình bày về một vấn đề cũng được coi là cơ bản khi các bạn lập trình viên sử dụng Linux, đó là Environment, mong là sẽ cung cấp cho các bạn (nhất là các bạn mới làm quen hay chưa bao giờ tìm hiểu về vấn đề này) thông tin cần thiết để các bạn hiểu được cách hoạt động của các biến môi trường khi các bạn cài đặt chương trình, hay khi các bạn code.

Trong phần này, chúng ta sẽ tìm hiểu về một số lệnh:

- printenv
- set
- export
- alias

Cái được lưu trữ trong environment?

Shell lưu trữ 2 loại thông tin trong environment, đó là:

  • Biến của shell (shell variables): là thông tin lưu được thiết lập bởi bash
  • Biến môi trường (environment variables): đơn giản là tất cả những biến còn lại.

Thêm vào đó, shell cũng có thể lưu trữ những dữ liệu được lập trình như là aliasesfunction

Để nhìn được những biến được setting trong environment, chúng ta có thể sử dụng hoặc lệnh set buitin của bash hoặc lệnh printenv.

Lệnh set sẽ in ra terminal cả biến shell và biến môi trường, còn lệnh printenv chỉ in ra biến môi trường. Chúng ta nên pipe output của 2 lệnh này vào less để có thể tìm được biến ta muốn.

Nếu chúng ta muốn in ra một biến cụ thể, chúng ta có thể dùng printenv kết hợp tên biến hoặc dùng echo $(tên_biến)

➜  ~ printenv USER 
hunguyen
➜  ~ echo $USER    
hunguyen

Có một loại thành phần của biến môi trường là aliases có thể view được bằng lệnh alias:

➜  ~ alias
-='cd -'
...=../..
....=../../..
.....=../../../..
......=../../../../..
1='cd -'
2='cd -2'
...

Biến môi trường được thiết lập như thế nào?

Khi chúng ta đăng nhập vào hệ thống, bash sẽ được khởi chạy và nó sẽ đọc một loạt các script cấu hình gọi là startup files, định nghĩa default environment dùng chung bởi tất cả các user.

Tiếp theo bash tiếp tục đọc các startup files tại home directory của chúng ta định nghĩa personal environment.

Thứ tự thực thi trên còn phụ thuộc vào loại của phiên session được khởi chạy. Có 2 loại:

  • Login shell session: là khi chúng ta được hỏi username và password, khi chúng ta mở virtual console session (Ctrl + Alt + F1-6).
  • Non-login shell session: là khi chúng ta mở cửa sổ terminal để shell session mới trong GUI.

Login shell session sẽ đọc các file sau:

  • /etc/profile: là global config script áp dụng cho tất cả các users.
  • ~/.bash_profile: là một personnal startup files, được sử dụng để thêm mới settings, hoặc overwrite lại setting trong file global config script.
  • ~/.bash_login, ~/.profile: nếu file ~/.bash_profile không được tìm thấy thì mặc định bash sẽ đọc một trong hai file này. Đây là quá trình mặc định với các phiên bản Debian.

Non-login shell sẽ đoc file sau:

  • /etc/bash.bashrc: global config script.
  • ~/.bashrc: Personal startup file.
  • Thêm vào đó, non-login shell thường được kế thừa những biến từ session cha, thường là login shell session.

Trong file startup, điều chúng ta cần lưu ý nhất là biến PATH. Đây là list các directory mà khi chúng ta thực thi một chương trình nào trong một shell session, nó sẽ không tìm toàn bộ máy tính để tìm kiếm full path của chương trình mà tìm trong chính biến PATH. PATH thường được thiết đặt như sau trong personal startup file:

PATH=$PATH:$HOME/bin

Thường khi chúng ta cài đặt một chương trình chúng ta muốn chương trình đó có thể chạy ở tất cả mọi nơi mà không phải vào trực tiếp vào nơi cài đặt chương trình. Chúng ta có thể thêm fullpath nơi chương trình được cài đặt vào PATH (đối với các chương trình mới hiện nay thì bộ cài đặt thường đã tự làm điều này cho chúng ta rồi). Có hai cách để làm điều này:

  • Một là thay đổi trực tiếp biến PATH bằng lệnh export: lệnh này cho phép biến PATH mới này được overwrite lại ở session hiện tại và các session con của nó, nhưng nó sẽ không lưu lại sau khi chúng ta kết thúc session hoặc khởi động lại máy.

➜  ~ export PATH=$PATH:$HOME/new_program_directory

  • Cách thứ hai là chỉnh sửa trực tiếp trong startup file. Tuy nhiên, chúng ta phải khởi động một session mới để thay đổi có tác dụng, vì file startup chỉ được đọc khi chúng ta chạy lại một session mới. Chúng ta có thể dùng lệnh source để bash đọc lại file này bằng cách:

➜  ~ source .bash_profile


Ngắn gọn, súc tích vậy thôi. Trong bài này mình dự định viết thêm cả về Vim Text Editor nữa nhưng vì nó không liên quan lắm và nó cũng không thể đi sâu vào Vim được, vì vậy với bài viết về Vim thì mình sẽ để sang bài viết sau nhé.

  • Linux

Leave a Reply

Your email address will not be published.