Câu trả lời dễ dàng với csh
Nếu bạn chỉ lo lắng về C Shell, điều đó thật dễ dàng. Đây là dòng lệnh của lệnh cuối cùng được thực thi. Xem Thay thế biến trong tài liệu tcsh
Câu trả lời dễ dàng với bash
Trong Bash, tài liệu trong chương Thông số đặc biệt cho chúng ta biết như sau:
Khi khởi động shell, được đặt thành tên đường dẫn tuyệt đối được sử dụng để gọi tập lệnh shell hoặc shell đang được thực thi như được truyền trong môi trường hoặc danh sách đối số. Sau đó, mở rộng đến đối số cuối cùng cho lệnh trước đó, sau khi mở rộng. Cũng được đặt thành tên đường dẫn đầy đủ được sử dụng để gọi từng lệnh được thực thi và được đặt trong môi trường được xuất sang lệnh đó. Khi kiểm tra thư, tham số này giữ tên của tệp thư.
Vì vậy, trong bash , nó thường là đối số cuối cùng cho lệnh trước đó. Thông thường...
Câu trả lời phức tạp với cả bash và csh
Trong trường hợp của bạn, phần mềm kdeinit được gọi từ shell Bash. Trước khi thực hiện kdeinit , tên đường dẫn đầy đủ của lệnh ( / usr / bin / kdeinit ) đã được sao chép bằng bash trong biến môi trường gạch dưới theo giải thích bên dưới. Phần mềm kdeinit đã khởi tạo môi trường đồ họa của bạn, truyền biến biến môi trường này cho mọi tiến trình con. Thiết bị đầu cuối C Shell của bạn do đó thừa hưởng biến môi trường đó.
Khi bạn ở trong C Shell đó, sự nhầm lẫn nằm giữa biến shell $ _ và biến môi trường _ . Trong C Shell, khi bạn sử dụng cấu trúc $ name , nó xuất ra biến shell hoặc biến môi trường nếu biến shell không tồn tại. Trong trường hợp này, cả hai đều tồn tại và khác nhau. Biến môi trường (như được hiển thị bởi lệnh env ) sẽ luôn nhắc cùng giá trị / usr / bin / kdeinit trong khi biến shell sẽ tiếp tục thay đổi để hiển thị lệnh cuối cùng được thực thi.
$_
là cách bạn muốn truy cập vào nó ...?