Как узнать, написан ли сценарий оболочки в 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?

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

  • Как сделать grep, даже если файл отсутствует?
  • Передайте список каталогов (содержащих пробелы) в команду в скрипте
  • Как войти в систему как root из Bash и делать что-то
  • Что означает `{{(выход 1); выход 1; }; } `означает?
  • Действительно ли программы `if` и` then`
  • awk: Могу ли я найти появление символа в заданной строке?
  • Переименуйте много файлов со всеми типами символов, с POSIX-переносимостью
  • Каков синтаксис для передачи вывода команды в xargs?
  • 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

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