LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

Если тебе не хватает возможностей sh и тебе не нужна переносимость sh, использовать bash вместо него - нормально.

Если не хватает sh то надо писать не на шелле. Пхп/питон, ну и Си в итоге.

А ещё добавлю, что правильней писать #!/usr/bin/env sh. К примеру в макоси есть /bin/bash древней версии, а когда юзер ставит новую версию через brew, то она ставится куда-то в /opt.

Причём тут баш и его версия? #!/bin/sh означает что это скрипт для posix-шелла, он должен работать на любом posix-совместимом шелле любой версии. Если ты начинаешь пользоваться какими-то нестандартными фичами - см. выше, надо целиком менять язык а не искать другой шелл.

Кажется правильней дать пользователю возможность выбирать тот интерпретатор, который будет использоваться для запуска скрипта, а не хардкодить его по определённому пути.

Пользователь всегда может написать /opt/local/bin/exotic_sh /path/to/script если ему надо выбрать интерпретатор. А то, что написано для sh, должно быть совместимо с любым posix sh.

правильней писать #!/usr/bin/env sh

А да, ещё оно совершенно без нужды сломается с неподмонтированным /usr. При том что самому sh /usr для работы не нужен и твоему скрипту может быть тоже не нужен.

Исходная версия firkax, :

Если тебе не хватает возможностей sh и тебе не нужна переносимость sh, использовать bash вместо него - нормально.

Если не хватает sh то надо писать не на шелле. Пхп/питон, ну и Си в итоге.

А ещё добавлю, что правильней писать #!/usr/bin/env sh. К примеру в макоси есть /bin/bash древней версии, а когда юзер ставит новую версию через brew, то она ставится куда-то в /opt.

Причём тут баш и его версия? #!/bin/sh означает что это скрипт для posix-шелла, он должен работать на любом posix-совместимом шелле любой версии. Если ты начинаешь пользоваться какими-то нестандартными фичами - см. выше, надо целиком менять язык а не искать другой шелл.

Кажется правильней дать пользователю возможность выбирать тот интерпретатор, который будет использоваться для запуска скрипта, а не хардкодить его по определённому пути.

Пользователь всегда может написать /opt/local/bin/exotic_sh /path/to/script если ему надо выбрать интерпретатор. А то, что написано для sh, должно быть совместимо с любым posix sh.