Этот вопрос может быть немного наивным, но есть ли одна оболочка, которая имеет тенденцию быть самой популярной среди пользователей Unix / Linux?
Моя предыдущая компания была в основном стандартизирована на tcsh, поэтому я выучил эту, к лучшему или к худшему, но мне интересно, стоит ли мне изучать bash, ksh или любой другой, если они, как правило, встречаются чаще.
Для Linux я бы сказал bash, хотя я вижу, что классические варианты Unix, похоже, предпочитают csh.
Поскольку я хочу, чтобы мои сценарии запускались на всех системах, которые я хочу (ну, насколько это возможно), я пишу и тестирую свои сценарии с помощью Bourne Shell (/ bin / sh), который присутствует во всех системах Unix, которые я когда-либо встречал.
Просто нужно знать, что в некоторых системах / bin / sh фактически является bash (например, мой Mac).
Это Perl.
Я всегда нахожу perl даже на некоторых старых Solaris 2.6, и написание perl намного более переносимо, чем написание сценария оболочки, учитывая, что / bin / sh может сильно отличаться. Затем вместо того, чтобы писать какой-нибудь csh / ksh / bash, где я всегда найду один сервер с неправильной версией оболочки для функции X, я переключился на perl. Иногда он более подробный, но я получаю 100% портативность для моей работы.
И не нужно говорить, что оболочка сама по себе ничего не делает: если вам не нужно исправлять версии grep / awk / sed (а есть десятки реализаций awk), вы облажались, в то время как сопоставление шаблонов Perl, структуры данных и т. Д. универсальны.
Mac OS X переключилась с tcsh на bash в качестве оболочки входа по умолчанию в версии 10.3. Solaris обычно использует sh для root и csh для обычных пользователей.
Я предполагаю, что я являюсь «классическим вариантом UNIX» (из ответа Майкла Стума), поскольку я использую tcsh, хотя я запускаю Scientific (переименованный RHEL в CentOs) и Ubuntu Linux.
Это связано с тем, что часть программного обеспечения, которое я использовал, когда впервые попал в Linux (и все еще использую), было разработано для работы под csh и не всегда хорошо работало с sh / bash. Вот чему я научился, и я просто придерживался этого. Первое, что я делаю при настройке новой учетной записи, - это переключаю свою оболочку по умолчанию на tcsh.
Хотя я могу использовать bash без проблем, синтаксис двух типов оболочки отличается (в отличие от комментария i-moan), и я действительно предпочитаю синтаксис tcsh, хотя я считаю, что он немного более ограничен. Я не слишком много пишу сценарии оболочки, поэтому у меня никогда не было проблем.
При этом я согласен, как и другие комментаторы, что bash является наиболее популярным, возможно, потому, что он долгое время использовался по умолчанию, и люди обычно не беспокоятся о переключении с него, как было упомянуто Дэвидом в Сравнение оболочек Unix вопрос
Учиться ш как ваша основная оболочка
В результате ваши скрипты также будут работать в трепать
а также есть..
Но, честно говоря, большинство дистрибутивов Linux связывают sh с bash (как его самый популярный расширенный набор)
я бы порекомендовал против используя tcsh в качестве оболочки. Это заставляет вас думать, что писать сценарии оболочки в tcsh можно. Это не.
Настоящая привлекательность, кажется, заключается в простоте использования командной строки «стрелка вверх», но с bash вы все равно это получите.
Кроме того, кодирование сценариев намного проще в sh и его производных (таких как bash и ksh), а не на csh и tcsh. Я также обнаружил, что sh всегда присутствует в unix, а bash легко получить в качестве надстройки первого выбора.
Я бы предостерегал от использования функций ksh и bash (например, массивов переменных и хешей), если вы не можете гарантировать их наличие на предприятии.
Используйте ту оболочку, с которой вам удобнее всего, но вы должны быть знакомы с другими и их основными операциями. Я знаю, что Oracle (или, по крайней мере, администратор баз данных Oracle, которого я знаю) имеет тенденцию делать что-то с использованием ksh, в то время как многие другие сценарии (например, установщики) запускаются в sh.
Приятно то, что большинство дистрибутивов (linux или другой вариант * nix) имеют множество доступных оболочек, поэтому вы все равно можете запускать скрипты в оболочках, отличных от оболочки, в которой вы вошли в систему.
Истинный sh, похоже, уходит в пользу bash, поскольку Linux сделал bash гораздо более популярной оболочкой для работы, чем sh (по крайней мере, для тех «классических вариантов UNIX».
В настоящее время я заставляю себя запустить zsh, чтобы узнать о нем больше (в прошлом обычно запускал bash или tcsh). Потом поиграю с ksh, хотя однажды попробовал, и мне очень не понравилось.
Безусловно, bash довольно популярен среди дистрибутивов Linux, но если вы хотите стать универсальным администратором UNIX, я думаю, что KSH - это то, что вам нужно. Где бы я ни работал, он использует несколько разновидностей UNIX по умолчанию. Он немного менее сломан, чем исходная оболочка Bourne Shell, но не имеет собственных функций, несовместимых с POSIX (например, bash, csh или tcsh).
В самом деле, это причина того, что дистрибутивы на основе debian теперь имеют тенденцию связывать / bin / sh для удаления - как это является Совместимость с POSIX, а также гораздо меньшая потребность в памяти, чем bash. К сожалению, многие сценарии оболочки, написанные для дистрибутивов Linux на протяжении многих лет, которые говорят #! / Bin / sh в строке shebang, фактически предполагают, что bash является оболочкой, и используют функции, которые доступны только в bash, - не очень хорошая практика.
Bash - хорошая оболочка для конечного пользователя, но я бы сказал, что ее большой объем памяти делает ее менее чем идеальной для сценариев оболочки.
Самый популярный - это bash. Лучше всего zsh, но не намного лучше, чем bash, чтобы убедить многих людей изменить свои привычки.
Использование csh или sh - ошибка. Вы должны использовать ksh только в том случае, если вам это необходимо (bash недоступен). Если сценарий должен обладать хорошей переносимостью, либо используйте sh и знайте, какие функции уникальны для вашей реализации, либо рассмотрите bash, поскольку он довольно широко распространен.
Я видел людей, которым гораздо удобнее использовать tcsh, чтобы они предпочли его bash.
Думаю, имеет смысл использовать для интерактивного использования ту же оболочку, что и для скриптов. Я рекомендую zsh людям, которые только что учатся и которые контролируют свое окружение, но bash людям, которым это уже немного комфортно. Люди, которым навязывают старые оболочки или вынуждены поддерживать старые скрипты, должны освоиться с sh, csh и ksh.
Мои комментарии исходят из предвзятости человека, который регулярно использует bash, иногда замечает zsh, говорит «это мило» и возвращается к bash, и кто возмущается, что иногда его заставляют использовать sh или csh из-за устаревших «требований».
Обратите внимание, что когда я говорю sh, я имею в виду старую оболочку Bourne, а когда я говорю csh, я имею в виду старую csh. Иногда это ссылки на более современные оболочки.
Также имейте в виду, что существует два основных выпуска ksh с некоторыми существенными различиями в наборах функций.
Я работаю со многими серверами AIX с ksh. Это также оболочка по умолчанию для root в OpenBSD.
Каждый раз, когда это возможно, я переключаю оболочку по умолчанию моей учетной записи на zsh.
Я пишу сценарии sh или perl как можно чаще.
Я относительно новичок в Linux (работаю с ним около двух лет). И я думаю, что большинство современных дистрибутивов используют bash.
Хотя я слышал хорошие отзывы о ZSH, и он обратно совместим с BASH
Проверить это ссылка на сайт: Хороший обзор преимуществ ZSH перед BASH.
Bash - одна из самых популярных оболочек IME.
Если вы хотите писать переносимые сценарии оболочки, используйте / bin / sh, это очень маленькая оболочка. У него нет всех функций, которые есть в bash. Некоторые дистрибутивы Linux имеют символическую ссылку / bin / sh на / bin / bash, поэтому будьте осторожны, если вы пишете оболочку. Ubuntu имеет символическую ссылку / bin / sh на / bin / dash, которая реализует только все вещи / bin / sh. Если он работает на / bin / dash, то он будет работать и на sh.