Я использую дистрибутив Ubuntu, где /bin/sh является символической ссылкой на /bin/dash . Хотя это нормально для большинства моих пользователей, один из них должен иметь символическую ссылку bin/sh на /bin/bash .

Это возможно? Я не уверен, как это сделать.

С уважением.

2 ответа2

3

[…] Один из них должен иметь /bin/sh символическую ссылку на /bin/bash .

Я подозреваю, что фактическое положение вещей таково:

[…] Один из них имеет несколько плохо написанных сценариев оболочки с Bashisms и не хочет исправлять плохие сценарии xyr.

Вы не можете сделать символическую ссылку для каждого пользователя, очевидно. Поэтому попросите вашего пользователя получить эти Bashisms из любого сценария оболочки, который использует /bin/sh качестве интерпретатора, и поместить /bin/bash (или альтернативы, упомянутые piernov) в любые сценарии оболочки, где на самом деле предполагается оболочка Bourne Again. быть интерпретатором сценария.

Эти сценарии, если они предполагают, что sh является только когда-либо оболочкой Bourne Again, или если они полагаются на Bashisms и фактически не вызывают оболочку Bourne Again как bash (даже вызывать ее как sh неправильно, если кто-то хочет из значительного числа Количество Bashisms.), сломаны и должны быть исправлены.

дальнейшее чтение

2

/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}").

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .