Khi bạn lấy một tập lệnh shell, dòng shebang sẽ bị bỏ qua. Bằng cách đặt một shebang không hợp lệ, bạn có thể cảnh báo người dùng rằng tập lệnh đã được thực thi sai:
#!/bin/bash source-this-script
# ...
Thông báo lỗi sẽ là:
/bin/bash: source-this-script: No such file or directory
Tên đối số (tùy ý) đã cung cấp một gợi ý mạnh mẽ, nhưng thông báo lỗi vẫn không rõ ràng 100%. Chúng tôi có thể khắc phục điều này bằng một tập lệnh tiện ích source-this-script
được đặt ở đâu đó trong PATH
:
#!/bin/sh
echo >&2 "This script must be sourced, not executed${1:+: }${1:-!}"
exit 1
Bây giờ, thông báo lỗi sẽ là:
This script must be sourced, not executed: path/to/script.sh
So sánh với các phương pháp khác
So với các câu trả lời khác, cách tiếp cận này chỉ yêu cầu thay đổi tối thiểu cho mỗi tập lệnh (và có một dòng shebang giúp phát hiện loại tệp trong trình chỉnh sửa và chỉ định phương ngữ tập lệnh shell, do đó thậm chí còn có lợi ích). Nhược điểm là một thông báo lỗi không rõ ràng hoặc bổ sung (một lần) của một tập lệnh shell khác.
Tuy nhiên, điều đó không ngăn cản việc gọi rõ ràng bash path/to/script.sh
(cảm ơn @muru!).
x
, chỉ chứa lệnh. your-script-to-be-sourced
, thì có ổn không, nhưng nếu anh ta muốn thực thibash your-script-to-be-sourced
thì có nên cấm không? Điểm hạn chế này là gì?