Hãy thử sử dụng man sh
hoặc man bash
hoặc trang man cho bất kỳ shell nào bạn đang sử dụng. (Có lẽ man $SHELL
.)
Đây chính thức không được gọi là lệnh "điểm", mà là source
lệnh. Tìm kiếm từ source
có thể hữu ích.
ví dụ: trang bash man (tìm kiếm "mỗi lệnh dựng sẵn") và bạn sẽ nhanh chóng tìm thấy tài liệu.
Để giải thích việc sử dụng, tôi có thể làm điều đó ngay tại đây. Tôi sẽ chỉ coi đây là source
lệnh, nhận ra rằng nó có thể được viết tắt thành một khoảng thời gian khi bạn đang sử dụng một số shell và với một số shell mà lệnh có thể cần phải có (vì dấu chấm có thể được nhận ra nhưng toàn bộ từ source
có thể không được).
Nếu bạn sử dụng source
lệnh, shell của bạn sẽ đọc từng dòng từ tệp script và cố gắng thực hiện nó. Bạn cần quyền "đọc" trên tập tin. (Không có vấn đề gì nếu bạn có quyền "thực thi".) Nếu bạn sửa đổi một biến, điều đó có xu hướng ảnh hưởng đến trình bao hiện tại của bạn.
Mặt khác, nếu bạn chỉ cố gắng thực thi tệp, thì shell của bạn sẽ yêu cầu hệ điều hành xử lý yêu cầu này. Điều này sẽ yêu cầu quyền "thực thi". (Trên một số hệ thống, như OpenBSD, bạn sẽ không cần quyền "đọc" cho việc này. Trên các hệ thống khác, bao gồm nhiều biến thể Unix, bạn sẽ.) Tệp có thể cần phải bắt đầu bằng một tiêu đề thích hợp (ví dụ #!/bin/sh
:) để hoạt động hệ thống nhận ra đây là một tập tin kịch bản. Hệ điều hành sẽ thực thi một bản sao của shell được yêu cầu và báo cho shell đó chạy nội dung của tập lệnh. Nếu môi trường shell được thay đổi (ví dụ, một biến được một giá trị mới, thư mục làm việc được thay đổi (với cd
), một bộ mô tả tập tin được chuyển hướng (với exec
), v.v.), nó sẽ chỉ tác động đến lớp vỏ phụ được gọi cho tập lệnh và không thể sửa đổi môi trường trong lớp vỏ được gọi là tệp tập lệnh.