/bin/sh
- это просто оболочка Борна. И dash, и bash могут выступать в роли sh-совместимых оболочек, и поскольку оригинальная оболочка Bourne больше не используется, sh часто является символической ссылкой на bash или dash (в основном в Ubuntu) или даже zsh.
Хотя при использовании sh вы не должны использовать какую-либо специфику конкретной оболочки. Вот почему скрипт с #!/bin/sh
shebang не должен полагаться на какой-либо bashism. Когда он использует какую-то особенность bash, он должен использовать #!/usr/bin/env bash
. Это для оболочки, используемой для запуска скриптов.
Другим аспектом оболочки является командная строка, используемая пользователем. В большинстве случаев это определяется в /etc/passwd
, и выбор остается на усмотрение используемого вами дистрибутива. Если по умолчанию используется dash, вы можете изменить строку в /etc/passwd
для конкретного пользователя и поместить /usr/bin/bash
.
Наконец, даже если это не очень хорошая идея, если вы действительно хотите, чтобы команда sh
запускала bash
, если она находится в оболочке, вы можете использовать ее alias
или создать символическую ссылку на нее в другом каталоге (например, ~/bin
) затем добавьте его к PATH (export PATH="~/bin:${PATH}"
).