Intereting Posts
Есть ли разница между значением режима 0777 и 777 Приложение с именем X использует слишком много CPU Вводится как инициировать самоисследование системы с определенным паролем limit stdout до конечной выходной скорости WinRAR installer.rar (автоматизировать ожидание установки) Как построить подписанный grubx64.efi для grub2? Помогите с пониманием регулярного выражения получить Cron для запуска в той же среде, что и я, с помощью ssh login Гиперпоточность, не обнаруженная Linux Что действительно контролирует параметр vm.swappiness? Как управлять пакетами исходного кода Debian с помощью aptitude или apt? Почему мой оконный менеджер (stumpwm) показывает крест на указателе мыши, когда он находится над корневым окном? Как выбрать сообщения в mutt на основе использования набора символов? Удалены ли удаленные тома LUKS локально с помощью sshfs, видимых для удаленных пользователей? Как навсегда отключить сетевой интерфейс?

В чем разница между скриптом bash и сценарием оболочки

Поскольку существуют разные типы оболочек, в чем разница между сценариями bash и shell и существует ли совместимый скрипт, который может писать, который работает на оболочках al unix

    Сценарий bash – это скрипт, интерпретируемый Bourne-Again SHell, и поэтому является скриптом оболочки. Он может или не может быть успешно выполнен другими оболочками. Если вы используете синтаксис bash specific, вы не можете быть уверены, что он будет работать с другими оболочками.

    Если вы хотите написать скрипт, который может быть интерпретирован каждой оболочкой, вы должны использовать синтаксис, описанный в стандарте POSIX, на языке команд командной оболочки . Конечно, не все раковины почитают стандарт POSIX, но это лучшее, что вы можете сделать. Такие скрипты могут быть очень портативными и могут работать на многих Linux и * nixes одинаково без ошибок.


    Многие оболочки и инструменты командной строки ищут переменную среды, называемую $POSIXLY_CORRECT . Если это установлено, эти инструменты ведут себя как инструмент, совместимый с posix.

    Другая попытка – флаг --posix . Например, GNU sed имеет флаг под названием --posix который отключает все расширения GNU, а sed ведет себя аналогично posix sed .

    bash поддерживает как --posix и переменную $POSIXLY_CORRECT .


    Если вы пишете свои сценарии таким образом и проверяете их с помощью совместимых с posix оболочек, вы можете наилучшим образом.

    Баш – это смесь клона черт из Bourne Shell и ksh88 (отчасти также ksh93).

    Сегодня Shell – слишком неподходящий термин …

    Сценарии Bash – это скрипты, которые используют уникальные возможности поставщика реализации bash .

    Если вам нравится писать переносные скрипты, существует два метода:

    1) писать сценарии, чтобы соответствовать стандарту POSIX, но тогда вам нужно знать, как вызвать оболочку POSIX на всех платформах. Обратите внимание, что вы не получите оболочку POSIX, вызвав /bin/sh . Вам, скорее всего, нужно будет установить PATH на выход getconf PATH а затем вызвать sh без использования PATH – вы видите, что это не полезно для установленных скриптов …

    2) писать сценарии, совместимые с Bourne Shell. Эти скрипты будут работать практически с любой (в основном оболочкой Bourne Shell). Поэтому ограничьте себя минимальным набором функций и предположений о ограничениях.

    Если вы хотите проверить свой сценарий на переносимость, я рекомендую вам проверить скрипт с помощью реализации SYSVr4 Bourne Shell. Портативная версия SVr4 Bourne Shell находится в архиве Shily Tools:

    http://sourceforge.net/projects/schilytools/files/

    Скомпилируйте и проверьте бинарный вызов osh . Это переносная SVr4 Bourne Shell.