В чем разница между «Shell» и «Bash» и что означают эти термины?
Насколько я знаю, разницы нет. Но я видел много книг о "Shell" и других о "Bash"!
Поэтому, если я хочу работать с терминалом в Mac OS X и написать несколько сценариев bash, мне интересно, для каких книг мне следует идти.
Ответы:
« Оболочка » - это любое программное обеспечение, которое предоставляет интерфейс для операционной системы. Например, explorer.exe является оболочкой по умолчанию в Windows (хотя альтернативы существуют ), а в OS X Finder предоставляет большую часть тех же функций. В Linux / * nix оболочка может быть частью среды рабочего стола (например, Gnome или KDE ) или может быть отдельным программным компонентом, расположенным поверх него (например, Unity или Cinnamon ).
Приведенные выше примеры представляют собой графические оболочки, которые используют комбинацию окон, меню, значков и других подобных элементов для обеспечения графического интерфейса пользователя (GUI), с которым можно взаимодействовать с помощью курсора мыши. Однако в контексте таких программ, как Bash или при написании сценариев, под «оболочкой» обычно понимается интерпретатор командной строки, который выполняет в основном те же функции, что и графическая оболочка, за исключением того, что он полностью основан на тексте.
Bash - это конкретный пример оболочки командной строки, и, вероятно, один из самых известных, который используется по умолчанию во многих дистрибутивах Linux, а также в OS X. Он был разработан как замена оболочки Bourne (стоит Bash). для "Bourne again shell"), одна из первых оболочек Unix .
Примеры оболочек командной строки в Windows включают cmd.exe (он же командная строка) и PowerShell .
источник
Баш - одна из нескольких оболочек.
Оболочка в Unix или Unix-подобной системе, такой как OSX или Linux, представляет собой прикладную программу, которая предоставляет интерфейс командной строки для операционной системы, позволяя вам вводить команды и запускать их. Существует множество различных оболочек на выбор, но все они предоставляют подстановочные знаки для имен файлов, трубопроводы, документы, подстановку команд, переменные и управляющие структуры для проверки условий и итерации.
Первоначальной оболочкой Unix была оболочка Bourne , sh, написанная Стивеном Борном в Bell Labs. Затем появилась оболочка C , написанная Биллом Джоем из Беркли и обновленная как tcsh . Другие оболочки включают оболочку Korn , ksh, написанную Дэвидом Корном, также в Bell Labs, и bash , «оболочку Bourne again», написанную Брайаном Фоксом для проекта GNU в качестве бесплатной замены sh.
Сегодня bash, пожалуй, самая популярная оболочка Unix, но многие люди (включая меня) по-прежнему предпочитают оболочку C, основанную на (как некоторым из нас кажется) более приятном синтаксисе. По сути, это дело вкуса, поэтому я рекомендую прочитать статьи Википедии, на которые я ссылаюсь, чтобы помочь вам начать работу.
источник
Термин «оболочка» хорошо назван. Это буквально оболочка вокруг O / S, позволяющая пользователю взаимодействовать с компьютером. Когда он был задуман, было очень мало графических пользовательских интерфейсов (без окон :(). Все было сделано в командной строке. Но даже командной строке нужно было место для жизни. Она жила и до сих пор живет в оболочке ,
Проще говоря, для того, чтобы командная строка была полезной, ей нужны инструкции, которые она может вызвать. Поэтому были созданы программы для запуска внутри оболочки для использования командной строкой. Программы были сгруппированы в отдельные пакеты и предназначены для совместной работы. Они включают в себя такие программы, как "ls" и "grep", "ps", "sed" и т. Д. Они также включают команды перенаправления файлов, такие как ">" и "<", и каналы ("|"). Что еще более важно, они также включают в себя программные конструкции, такие как условные операции (если, тогда, еще, для циклов, в то время как циклы, способы проверки состояния, возвращаемого при выполнении оператора (например, если вы запустили «ls», он что-то нашел?), Вещь как это). Это основы более сложных сценариев командной строки (оболочки),
Когда кто-то использует термин «Bash Shell», он говорит о интерпретаторе командной строки «Bash», который запускается в оболочке O / S. Вы можете думать об этом как о сокращении «Bash Shell Interpreter». Есть и другие переводчики, такие как Bourne (Bash - это «новая и улучшенная оболочка Bourne Shell», а для Bourne Again Shell она сокращена). Есть также C-Shell, K-Shell (любимый многими, кто пишет сложные сценарии оболочки), и другие варианты GNU. С годами стало привычным ссылаться на конкретного интерпретатора командной строки, который вы используете в качестве оболочки, потому что один не может использоваться без другого. Но реальность такова, что они разные.
Что касается того, почему они должным образом известны как интерпретаторы командной строки, а не как фактическая оболочка: это потому, что они живут в оболочке и интерпретируют все команды, как если бы они выполнялись в программе. И оболочке все равно, какой интерпретатор вы используете в ней, если она соответствует правильным стандартам.
И почему их называют переводчиками, это потому, что они действительно переводчики. Даже если вы не запускаете скрипт явно (а скрипт на самом деле представляет собой просто текстовый файл команд, которые вы создаете, чтобы вы могли выполнять одни и те же команды снова и снова без необходимости их повторного ввода). Например, возьмите скромную команду «ls». Когда вы запускаете его, он возвращает список файлов. Но то, как он работает, более важно для вашего вопроса: он на самом деле работает в контексте интерпретатора командной строки, даже если вы просто запускаете то, что кажется простой командой без подключения. То есть он работает так, как если бы он был частью более крупной программы. Он работает так, как если бы он находился в файле сценария сценария оболочки, фактически не находясь в файле сценария оболочки. Файл сценария анонимной оболочки как бы.
Все, что вы запускаете в командной строке, имеет это общее (будь то отдельная команда, такая как 'ls' или файл сценария, полный команд, итераторов и условных операторов): все это обрабатывается интерпретатором командной строки; будь то Bash, C-Shell, K-Shell (по умолчанию в AIX, кстати).
Чтобы понять, что я имею в виду, создайте каталог 'test':
Введите его и выполните следующие команды
Вы получите какой-то ответ типа «нет такого файла или каталога». Теперь введите команду
($? говорит, скажите мне, что вы нашли в загадочном компьютере.) Вы должны увидеть, что он возвращает число (оно должно быть) '2'. Это код возврата от grep, который означает «нет такого файла или каталога». Теперь запустите следующее:
Вы увидите файл 'hello.txt', возвращенный из начальной команды grep, и теперь должны увидеть 'echo $?' верните число «0», означающее, что оно действительно что-то нашло.
Даже если эти, казалось бы, единственные команды запускаются, интерпретатор командной строки действует так, как будто он является частью более крупной программы, и отслеживает их возвращаемые значения. Вот почему, если вы забудете * в конце команды grep, она не вернется. Он знает, что утверждение является неполным и ожидает большего ввода. В конце концов, вы, возможно, захотите попросить его отобразить результаты некоторого цикла, который абсолютно допустим для написания и запуска в командной строке.
Суть в том, что оболочка - это оболочка, и интерпретатор (независимо от того, какое имя вы используете, 'Bash', k-shell и т. Д.) Различаются. Но часто они используются взаимозаменяемо, потому что в любой момент они полностью связаны друг с другом.
источник
Shell - это текстовый пользовательский интерфейс.
Bash это тип оболочки.
источник
bash
это один изshell
семьи, но есть много других оболочек.Например, в Minix3 есть
ash
оболочка, она не поддерживает ассоциативные массивы, такие какbash4
.Стандарт POSIX - это попытка создать переносимый API между различными оболочками и ОС.
Смотрите http://en.wikipedia.org/wiki/Unix_shell#Bourne_shell_compatible
источник
bash
это одна из многих существующих оболочек.Все оболочки имеют свои сходства и различия. Например, скрипт, написанный на bash, может быть полностью или в значительной степени совместим с другой оболочкой (например, zsh ).
Из-за того, что
bash
это очень широко распространено, часто подразумевается, что сценарий совместим с ним.Если вы хотите купить книгу, купите книгу, написанную специально для оболочки, которую вы собираетесь использовать. Было бы неплохо прочитать их различия, прежде чем тратить деньги.
источник