Как узнать, написан ли скрипт оболочки на bash или sh?

8

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

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

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

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

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

user1115057
источник
3
Смотрите Bashisms на Wiki Грега ...
Jasonwryan

Ответы:

15

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

Самое простое решение , чтобы определить , если сценарий оболочки Баш использовать checkbashism- см man checkbashismsдля деталей.

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

Ульрих Дангел
источник