Câu 1echo $HOME hiển thị gì?
Biến môi trường — PATH và export
Học cách tham chiếu biến bằng echo $VAR và env, HOME và PATH nghĩa là gì, đặt biến bằng export, và thay thế lệnh $(...) — thực hành ngay trên terminal trong trình duyệt.
Tham chiếu biến — echo $VAR và env
Biến môi trường là các thiết lập được shell và các chương trình dùng chung.
Bạn lưu một giá trị dưới một tên, và viết $name sẽ thay thế bằng giá trị đó.
Tham chiếu một biến bằng cách thêm tiền tố $, như echo $HOME, và chạy env để hiển thị danh sách các biến môi trường hiện được đặt.
Là các biến tiêu biểu, HOME là đường dẫn tới thư mục home của bạn (ở đây /root), và PATH là danh sách các nơi tìm lệnh, ngăn cách bằng dấu hai chấm.
Gõ chỉ ls chạy được vì tệp thực thi ls nằm trong một trong các thư mục liệt kê trong PATH, và shell tìm thấy nó ở đó.
Ví dụ khác: PWD là thư mục làm việc hiện tại, USER là tên người dùng đang đăng nhập (ở đây root), và SHELL là đường dẫn tới login shell.
| Biến | Ý nghĩa | Ví dụ ở đây |
|---|---|---|
$HOME | Đường dẫn tới thư mục home | /root |
$PATH | Danh sách thư mục tìm lệnh (ngăn cách bằng :) | /sbin:/usr/sbin:/bin:/usr/bin |
$PWD | Thư mục làm việc hiện tại | /root |
$USER | Tên người dùng đang đăng nhập | root |
$SHELL | Đường dẫn tới login shell | /bin/sh |
$name hiện một giá trị; env hiện danh sách tất cả các biến.echo $HOME # đường dẫn home (/root)
echo $PATH # danh sách đường dẫn tìm lệnh
env # hiện mọi biến môi trường
Đặt biến — export và $(...)
name=value đặt một giá trị vào một biến, và thêm export name mang biến đó vào các chương trình bạn khởi chạy sau này.
Bạn cũng có thể viết trên một dòng là export name=value.
Bạn có thể tham chiếu bằng $name, nhưng bao nó thành ${name} làm rõ ranh giới của tên biến, nên nó mở rộng không nhập nhằng ngay cả khi có ký tự theo ngay sau, như ${HOME}/bin.
Khi nghi ngờ, nên viết theo dạng ${name}.
$(command) là thay thế lệnh: nó chạy lệnh bên trong và thay nó bằng đầu ra đó dưới dạng một chuỗi tại chỗ.
Ví dụ, echo $(pwd) hiển thị đầu ra của pwd (đường dẫn tới vị trí hiện tại của bạn) dưới dạng một chuỗi.
Dùng nó khi bạn muốn đặt kết quả của một lệnh vào giá trị của một biến.
| Cách viết | Ý nghĩa | Ví dụ |
|---|---|---|
$VAR | Thay bằng giá trị của biến | echo $HOME |
${VAR} | Tham chiếu với ranh giới rõ ràng (khuyến nghị) | echo ${HOME}/bin |
VAR=value | Gán chỉ trong shell hiện tại | NAME=demo |
export VAR=value | Gán và mang vào tiến trình con | export NAME=demo |
$(command) | Thay bằng đầu ra của lệnh | echo $(pwd) |
export mang giá trị đi tiếp, và $(...) nhúng đầu ra của một lệnh.export GREETING=hello # đặt một biến và mang nó đi tiếp
echo $GREETING # hello
echo "today is $(date)" # nhúng đầu ra của lệnh bằng $(...)
PATH hoạt động thế nào — Cách một lệnh được tìm thấy
PATH là một biến môi trường liệt kê các thư mục tìm lệnh, ngăn cách bằng dấu hai chấm :.
Khi bạn gõ một lệnh chỉ bằng tên, không có đường dẫn, như ls hoặc cat, shell duyệt các thư mục liệt kê trong PATH từ trái sang phải và chạy tệp thực thi đầu tiên nó tìm thấy.
Đó là lý do chỉ ls chạy được mà không cần viết đường dẫn đầy đủ /bin/ls.
Ngược lại, một lệnh không nằm trong bất kỳ thư mục nào trong PATH sẽ cho ra not found.
Để gọi script của riêng bạn chỉ bằng tên, bạn cần thêm vị trí của nó vào PATH, điều mà chúng ta sẽ xem tiếp theo.
PATH là /sbin:/usr/sbin:/bin:/usr/bin, ls được tìm từ /sbin bên trái theo thứ tự, tìm thấy ở /bin, và việc tìm dừng ở đó. Nó không bao giờ đi xa tới /usr/bin.Cách thêm vào PATH
Khi bạn muốn chạy lệnh của riêng mình chỉ bằng tên, hãy thêm vị trí của nó vào PATH.
Viết nó là export PATH=${PATH}:/new/dir, nối thêm một dấu hai chấm và thư mục mới vào cuối PATH hiện tại.
Bạn đưa ${PATH} vào để thêm vào các nơi tìm kiếm hiện có mà không xóa chúng.
Kiểm tra kiến thức
Hãy trả lời từng câu hỏi một.
Câu 2Điều nào đúng về vai trò của PATH?
Câu 3Điều gì được hiển thị khi bạn chạy echo $(pwd)?