Câu trả lời:
Không, không phải tất cả các tập lệnh dành cho bash đều hoạt động với dấu gạch ngang. Một số 'bashism' sẽ không hoạt động trong dấu gạch ngang, chẳng hạn như kiểu C cho các vòng lặp và toán tử so sánh khung kép. Nếu bạn có một tập các bash script mà bạn muốn sử dụng cho dấu gạch ngang, bạn có thể cân nhắc sử dụng checkbashism . Công cụ này sẽ kiểm tra tập lệnh của bạn để biết các tính năng chỉ bash không có khả năng hoạt động trong dấu gạch ngang.
#!/bin/sh
nhưng không hoạt động /bin/sh
(ví dụ: vì nó được viết cho và chỉ chạy trong bash
) nên được coi là bị hỏng . Cách đơn giản nhất để sửa các tập lệnh như vậy là thay thế shebang bằng #!/bin/bash
(hoặc #!/usr/bin/env bash
).
bash
các tính năng -only, bạn nên khai báo nó như vậy và không phải như vậy sh
. Mặt khác, nó chỉ đơn giản là không hoạt động trên bất kỳ hệ thống nào không được sh
liên kết đến bash
. Điều thực tế cần làm là viết và shebang các tập lệnh của bạn một cách chính xác để chúng thực sự hoạt động .
Thậm chí các kịch bản sh không tương thích với dấu gạch ngang. Bootstrap của Pkgsrc, ví dụ.
dash -n
đã không đưa ra bất kỳ lỗi nào khi chạy với bootstrap, nhưng đó là thử nghiệm ngây thơ nhất.
dash
không hỗ trợ. Có thể nhiều thứ hơn, nhưng danh sách là rất nhỏ.
local
#!/bin/bash
và các tập lệnh của anh ấy không tuân thủ theo kiểu posix và do đó cần được chỉ định để chạy với trình thông dịch thích hợp