Tôi muốn nói # 2, nhưng rất gần với # 1 - "Xấu. Xấu. Xấu. Không bao giờ làm điều này." Tiêu chuẩn, chẳng hạn như, đối với các tập lệnh init Linux nằm trong LSB , và trong khi nó không bao giờ xuất hiện và nói rằng "đây là các tập lệnh shell bourne", một số giả định được đưa ra. Một, những dòng bắt đầu bằng # là các bình luận, sẽ hoạt động tốt. Khó khăn hơn là yêu cầu tập lệnh init thực thi các lệnh từ /lib/lsb/init-functions
"trong môi trường hiện tại (xem dấu chấm lệnh tích hợp đặc biệt của shell)".
Nhưng quan trọng hơn, nếu bạn đang làm bất cứ điều gì thực sự phức tạp ở đây, thì bạn đã làm sai. Các kịch bản init nên rất đơn giản và tiện dụng. Chúng nên là kịch bản theo nghĩa cổ điển, không phải chương trình. Tốt hơn hết là hút nó lên và tạo một kịch bản shell đơn giản mà bất kỳ sysadmin nào cũng có thể dễ dàng mò mẫm trong một cái nhìn nhanh hơn là tạo ra thứ gì đó đẹp đẽ và được thiết kế trong Python.
Một lưu ý khác cần ghi nhớ là systemd
, có thể hoặc không phải là Tương lai của tất cả các khởi tạo hệ thống trên Linux. Theo systemd, việc khởi tạo được thực hiện bởi các tệp cấu hình đơn giản thay vì các tập lệnh, ý tưởng là tất cả các khởi động đều phù hợp với một số mẫu thiết kế tiêu chuẩn và thực sự bạn chỉ cần chọn một tệp. Nếu chương trình của bạn sử dụng một cái gì đó phức tạp để khởi tạo, thì nó sẽ nằm ngoài chính tập lệnh init.