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à aliases
và function
Để 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 địnhbash
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ệnhexport
: lệnh này cho phép biếnPATH
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é.