_
Trong Bash: Bí Mật Ẩn Sau Dấu Gạch DướiBạn đã bao giờ tự hỏi dấu gạch dưới (_
) trong Bash có ý nghĩa gì chưa? Nó không chỉ là một ký tự vô nghĩa, mà là một biến môi trường đặc biệt nắm giữ thông tin quan trọng về lệnh bạn vừa thực thi. Bài viết này sẽ đi sâu vào ý nghĩa của biến _
, cách nó hoạt động và cách bạn có thể tận dụng nó để viết script Bash hiệu quả hơn.
_
Là Gì Trong Bash?Trong Bash, _
là một tham số đặc biệt, không phải là một biến môi trường theo nghĩa thông thường. Nó được tự động cập nhật bởi shell sau mỗi lệnh được thực thi. Giá trị của _
thường là tham số cuối cùng của lệnh trước đó. Tuy nhiên, giá trị này có thể thay đổi tùy thuộc vào ngữ cảnh.
_
_
Để hiểu rõ hơn, hãy xem xét một vài ví dụ:
Ví dụ 1: Lệnh đơn giản
Nếu bạn chạy lệnh ls -l /home/user/documents
, sau đó gõ echo $_
, bạn sẽ thấy /home/user/documents
được in ra. Điều này là do /home/user/documents
là tham số cuối cùng của lệnh ls -l
.
Ví dụ 2: Chuỗi lệnh
Với chuỗi lệnh mkdir my_directory && cd $_
, $_
sẽ chứa my_directory
, cho phép bạn dễ dàng di chuyển vào thư mục vừa tạo.
Lưu ý quan trọng: Giá trị của _
sẽ bị ghi đè sau mỗi lệnh. Do đó, nếu bạn muốn sử dụng nó, hãy truy cập nó ngay sau khi lệnh tương ứng được thực thi.
_
Có Phải Là Một Biến Môi Trường Thực Sự?Mặc dù _
xuất hiện trong đầu ra của các lệnh như env
và printenv
, nó không phải là một biến môi trường theo nghĩa truyền thống. Bạn không thể gán giá trị trực tiếp cho nó bằng cú pháp _="giá trị mới"
. Hệ thống sẽ tự động cập nhật giá trị của _
dựa trên lệnh vừa thực thi. Việc cố gắng gán giá trị cho nó sẽ không có tác dụng lâu dài, vì nó sẽ bị ghi đè ngay sau đó.
Điều này cũng giải thích tại sao khi bạn dùng lệnh export
thì sẽ không thấy biến _
, vì nó không được đánh dấu là exported, tức là không được truyền sang môi trường của các process con.
bash
), biến _
trong shell con đó sẽ được khởi tạo với đường dẫn của lệnh bash
._
có thể chứa đường dẫn của script đang chạy._
chỉ chứa tham số *cuối cùng* của lệnh. Với các lệnh có nhiều tham số, chỉ tham số cuối cùng được lưu trữ.Biến _
trong Bash là một công cụ nhỏ nhưng hữu ích, đặc biệt khi bạn cần tham chiếu nhanh đến tham số cuối cùng của lệnh trước đó. Hiểu rõ cách nó hoạt động sẽ giúp bạn viết các script Bash ngắn gọn và hiệu quả hơn. Mặc dù không phải là một biến môi trường thông thường, _
đóng vai trò quan trọng trong việc cung cấp thông tin về ngữ cảnh thực thi lệnh trong shell.
Bài viết liên quan