AzLearn

قابلية النقل

Portability

مفهوم ~17 دقيقة

قابلية النقل — Portability

ليس كل Bash متطابقاً. macOS قد يأتي بإصدار Bash قديم، بينما توزيعات Linux غالباً أحدث. بعض الميزات مثل associative arrays تحتاج Bash 4+. إذا كتبت سكربتاً سيعمل على أجهزة متعددة، تحقق من الإصدار أو تجنب الميزات غير المتاحة.

استخدم #!/usr/bin/env bash عندما تريد Bash من البيئة، لا مساراً ثابتاً قد يختلف. لكن هذا لا يحل اختلاف الإصدار. يمكنك قراءة ${BASH_VERSION} والتحقق من الحد الأدنى. إذا كان السكربت يحتاج associative arrays، قل ذلك صراحة.

كذلك بعض أوامر النظام تختلف. sed -i مثال شهير: يعمل بطريقة مختلفة بين GNU sed وBSD sed. لذلك في السكربتات القابلة للنقل، اكتب إلى ملف جديد بدلاً من تعديل مباشر، أو وثق الاعتماد.

مثال تحقق إصدار

script.sh

هذا لا يعني أن كل سكربت يحتاج تحقق إصدار. أضفه عندما تعتمد على ميزة معروفة الاختلاف.

تحدي — Challenge