Một phần mềm tôi đã cài đặt đã chèn một dòng trong hồ sơ của tôi có nội dung:
Tôi biết dấu chấm .đồng nghĩa với source, vì vậy tôi nghi ngờ đây chỉ là tìm nguồn cung cấp tệp, nhưng tôi chưa từng thấy . trước đây; nó có làm gì khác không?
Dấu gạch chéo ngược bên ngoài dấu ngoặc kép có nghĩa là diễn giải các ký tự tiếp theo theo nghĩa đen trong khi phân tích cú pháp. Vì .là một ký tự bình thường cho trình phân tích cú pháp, .được phân tích cú pháp theo cùng một cách .và gọi hàm dựng sẵn .(trong đó source là một từ đồng nghĩa trong bash).
Có một trường hợp nó có thể tạo ra sự khác biệt trong bối cảnh này. Nếu người dùng đã xác định một bí danh được gọi .trước đó .profilevà .profileđang được đọc trong một vỏ mở rộng các bí danh (mà bash chỉ làm theo mặc định khi nó được gọi tương tác), thì .sẽ kích hoạt bí danh, nhưng . vẫn sẽ kích hoạt nội dung, bởi vì trình bao không thử mở rộng bí danh trên các từ được trích dẫn theo bất kỳ cách nào.
Tôi nghi ngờ điều đó .đã được thay đổi thành .vì một người dùng phàn nàn sau khi họ tạo bí danh cho ..
Lưu ý rằng .sẽ gọi một hàm được gọi là .. Có lẽ người dùng viết hàm có nhiều kiến thức hơn người dùng viết bí danh và sẽ biết rằng việc xác định lại một lệnh tiêu chuẩn .profilelà một ý tưởng tồi nếu bạn định đưa mã từ bên thứ ba. Nhưng nếu bạn muốn bỏ qua cả bí danh và hàm, bạn có thể viết command .. Tác giả của đoạn trích này cũng không làm điều này bởi vì họ quan tâm đến những chiếc vỏ cổ không có command sẵn, hoặc nhiều khả năng là vì họ không biết về nó.
Nhân tiện, việc xác định bất kỳ bí danh nào.profile là một ý tưởng tồi vì .profilelà tập lệnh khởi tạo phiên , không phải là tập lệnh khởi tạo shell . Bí danh cho bash thuộc về .bashrc.
Đây .là một “dấu chấm”, nghĩa là chỉ một dấu chấm. Nó sẽ được coi là .lệnh tiêu chuẩn (tương tự như sourcetrong bash).
Tiêu chuẩn POSIX có điều này để nói về điều này (sự nhấn mạnh của tôi)
Ký tự dấu chấm có thể được đặt bí danh:
có nghĩa là .sẽ tránh sử dụng phiên bản bí danh của .lệnh, bởi vì ,
Sau khi mã thông báo đã được phân định, nhưng trước khi áp dụng các quy tắc ngữ pháp trong Shell Grammar, một từ kết quả được xác định là từ tên lệnh của một lệnh đơn giản sẽ được kiểm tra để xác định xem đó có phải là tên bí danh không hợp lệ hay không.