Почему оболочка входа - это bash, а / bin / sh - это ссылка на тире? [дубликат]

Обычно , значение переменной среды SHELL равно / bin / bash, это означает, что обычная среда оболочки - это Bash , Однако , / bin / sh является ссылкой на Dash, что такое эффект Dash?

Другой вопрос: хотя наша оболочка - это bash, почему из-за тире иногда что-то не получается?

1
задан 26 December 2018 в 12:49

2 ответа

Замечание общего порядка о sh

Оболочка sh символьная ссылка на dash, который является оболочкой с очень легким местом. Это означает, что это может работать быстро и не будет использовать много памяти. Но встроенные команды - немногие, простые и имеют другой синтаксис по сравнению с более усовершенствованными оболочками (например, bash).

Обе оболочки (sh и bash) полезны, но для различных целей.

Как сделать сценарий оболочки выполненным bash

При выполнении текстового файла с командами, сценарием оболочки, можно вынудить его работать определенной оболочкой. Иначе это может принять значение по умолчанию к оболочке, которая делает не работает, как предназначено, например, потому что некоторая встроенная команда не существует, или синтаксис для встроенной команды отличается.

Таким образом, для создания сценария оболочки выполненным с bash, можно вызвать его

  • путем вызова его от bash

    bash shellscriptname
    
  • путем записи строки наверху файла, первой строки с содержанием

    #!/bin/bash
    

    Это называют 'хижиной'. Хижина может указать на другие оболочки также, например sh или csh но также и другие программы, например python или bc. Если Вы делаете исполняемый файл файла сценария оболочки

    chmod +x shellscriptname
    

    можно выполнить его со следующей командой

    ./shellscriptname                        # when in the current directory
    path-to-the-script-file/shellscriptname  # when somewhere else
    shellscriptname                          # when in a directory in PATH
    

    и это будет выполняться оболочкой или другой программой в хижине.

1
ответ дан 7 December 2019 в 13:19

Они основная точка являются этим bash предназначен для интерактивного использования, dash используется для системных сценариев.

bash идет со всеми из функций, среди которых редактирование строки. У Вас есть определенные ярлыки для удаления слова, перехода к началу строки, и т.д. Это удобно для записи команд в интерактивном режиме. Однако это прибывает в цену производительности, и загрузите времена.

dash с другой стороны, предназначен для сценариев системы письменности, которые являются быстрыми и портативными, таким образом помощь сохраняют время начальной загрузки коротким, и на Ubuntu она компилируется без редактирования строки, даже без vi режим редактирования. Таким образом это имеет меньше служебное. bash способно к выполнению точно тех же сценариев /bin/dash выполнения (если они записаны с портативным синтаксисом, конечно), но dash просто быстрее при выполнении этого того же самого.

Обратите внимание, конечно, что пользователи свободны изменить свою оболочку входа в систему через chsh команда, и Вы не должны придерживаться с bash если это не то, что Вы предпочитаете.

1
ответ дан 7 December 2019 в 13:19

Другие вопросы по тегам:

Похожие вопросы: