Wiki của Greg có một bài viết về việc điều chỉnh các tập lệnh bash cho Dash chỉ ra rất nhiều 'bashism' - các tính năng bổ sung không chuẩn nhưng là một phần của bash. Tránh những bashism đó có thể giúp làm cho kịch bản của bạn thân thiện hơn với các môi trường khác nhau. Điều này đặc biệt trả lời một số câu hỏi của bạn. Ví dụ, có, có các toán tử khác nhau (như ==
), nhưng có một bộ Posix tiêu chuẩn sẽ hoạt động trong tất cả các môi trường.
Để đọc kỹ hơn, bạn có thể kiểm tra tiêu chuẩn Posix , tất cả các vỏ phải tuân thủ. Đặc biệt, âm lượng trên "Shell & Utility".
Điều tôi thấy khó khăn hơn sự khác biệt về vỏ là sự khác biệt về lệnh. Nhiều hệ thống Linux có GNU find
, nhưng nếu bạn đang viết một tập lệnh di động, đừng dựa vào chính bạn man find
, bởi vì có rất nhiều hệ thống có BSD find
, có một bộ tính năng khác. Nếu bạn đang viết tập lệnh cho busybox, bạn sẽ thấy có các phiên bản khác nhau với nc
s hoàn toàn khác nhau . Đó là những thứ luôn có được tôi khi tôi triển khai một kịch bản đến các môi trường khác nhau.
Để đọc thêm về thực hành kịch bản shell tốt, cũng có một tài nguyên tốt trên blog của David Pashley: Writing Robust Bash Shell Script
Ngoài ra, hãy chắc chắn rằng bạn đã đọc câu trả lời và nhận xét của Gilles trên trang web này. Anh ta có rất nhiều lời khuyên về việc đảm bảo bạn sử dụng mã di động.