Как узнать, написан ли сценарий оболочки в bash или sh

Как я могу узнать, написан ли сценарий в bash или sh ?

Первая строка скрипта здесь не полезна, поскольку в Linux скрипты bash имеют следующую строку: #!bin/sh

На самом деле, существует множество дистрибутивов где /bin/sh is bash (возможно, /bin/sh – это ссылка на /bin/bash в этих дистрибутивах), а не Bourne Shell. Поэтому, если я попытаюсь запустить скрипт, написанный в bash, например, FreeBSD, результат не определен, поскольку /bin/sh в FreeBSD является Bourne Shell, а не bash.

Есть ли простой способ определить, является ли скрипт bash или sh?

Есть ли какие-то отличительные особенности в синтаксисе?

  • Значок прекращает загрузку после перезапуска приложения
  • Почему set -e не работает внутри () ||
  • Есть ли преимущество в использовании ksh над zsh?
  • Защитная оболочка Power Broker или полный сценарий оболочки
  • используя find в Bash Script и проверяя, присутствует ли файл
  • Как переименовать файлы с sed и csv
  • Проблемы с дублированием $ PATH
  • Редактирование gnome-shell.css не изменяет внешний вид
  • One Solution collect form web for “Как узнать, написан ли сценарий оболочки в bash или sh”

    На самом деле линии shebang означают что-то, поскольку некоторые дистрибутивы, такие как Debian, не используют bash для /bin/sh но dash .

    Простейшим решением для определения, является ли сценарий оболочки bash, является использование checkbashism – см. man checkbashisms для деталей.

    checkbashisms должен быть упакован разными дистрибутивами, для Debian он находится в пакете devscripts – Fedora в devscripts-minimal (раньше он был в rpmdevtools ) и OpenSuSe в rpmlint-mini

    Linux и Unix - лучшая ОС в мире.