У Greki's Wiki є публікація про адаптацію bash-скриптів для Dash, яка вказує на багато «башизмів» - додаткових функцій, які нестандартні, але є частиною bash. Уникнення цих басизмів може допомогти зробити ваш сценарій дружнішим до різних середовищ. Це особливо відповідає на деякі ваші запитання. Наприклад, так, є оператори, які відрізняються (як ==
), але є стандартний набір Posix, який повинен працювати у будь-яких умовах.
Для більш ретельного читання ви можете ознайомитися зі стандартом Posix , якому повинні відповідати всі оболонки. Зокрема, том на "Shell & Utilities".
Що мені здається більш складним, ніж відмінності в оболонці - це командні відмінності. У багатьох системах Linux є GNU find
, але якщо ви пишете портативний скрипт, не покладайтесь на свій власний man find
, оскільки там багато систем з BSD find
, який має інший набір функцій. Якщо ви пишете сценарії для зайнятої скриньки, ви виявите, що існують різні версії з абсолютно різними nc
s. Це такі речі, які мене завжди отримують, коли я розгортаю сценарій в різних середовищах.
Для додаткового читання щодо хороших методів сценаріїв оболонок, також є хороший ресурс у блозі Девіда Пашлі: Написання надійних сценаріїв оболонки Баша
Крім того , переконайтеся , що ви читали Жиля відповіді і коментарі на цьому сайті. У нього є багато порад щодо забезпечення використання портативного коду.