Я использовал bash, csh и tcsh. Но я спросил этот вопрос, и Джонатан сообщил мне, что csh не нужно доверять. Итак, какая оболочка Linux хороша для разработки. и почему?
Какую оболочку Linux я должен использовать?
Ответ 1
На сегодняшний день наиболее распространенной оболочкой в Linux является bash. Если у вас нет веской причины использовать альтернативу, я бы предложил использовать команду bash или наиболее часто используемую оболочку вашей проектной команды (или большую часть сценариев оболочки, с которыми вам приходится работать).
Единственный другой очень распространенный претендент - это тире, который все более широко используется в проекте Ubuntu.
Это действительно личное предпочтение, ну, за исключением csh.
Ответ 2
Я предпочитаю zsh.
Только табло-пополнение стоит:
- Он расширяет подстановочные знаки, если вы хотите (удобно, когда вы хотите удалить все, кроме одного файла в каталоге)
- Дает вам список переключателей после указания программы
- Предоставляет параметры завершения вкладок под строкой, над которой вы работаете, что очень удобно.
Ответ 3
Для интерактивности используйте Zsh. Некоторое время я был сторонником FreeBSD-порта сценариев завершения Bash, но отказался от него, как только я впервые попробовал Zsh. Он может делать все, что Bash может сделать, но более легко и элегантно. Он также обладает прекрасным свойством иметь чрезвычайно Bash -подобные нажатия клавиш, поэтому, если вы находитесь в системе без Zsh, вы сможете сделать (даже если это не будет "чувствовать" как приятно).
Для сценариев используйте Bourne Shell (sh). Это стандартный скриптовый язык POSIX, и ваши скрипты в значительной степени гарантированно работают повсюду. Bash и Zsh и другие оболочки имеют приятные расширения, которые вы пропустите, но они привязывают вас к определенной настройке. Игнорируйте этот совет для сценариев только для личного использования, и вы уверены, что никогда не будете работать в другом месте, но помните, что это реальный компромисс, который вам нужно рассмотреть.
Но в итоге, Zsh. Я не знаю никого, кто пробовал его, который не сразу и постоянно переключался. Это действительно так хорошо.
Ответ 4
Fish (дружественная интерактивная оболочка) - хорошая альтернатива большинству других оболочек. Он имеет последовательный синтаксис, красивое завершение вкладок и подсветку синтаксиса, легко подбирать и использовать (особенно если у вас нет привычек от других оболочек) и имеет отличную помощь во время выполнения.
Даунсайд - это то, что он хаотично развивается, имеет небольшую (но полезную) базу пользователей и сильно отличается от других оболочек. Обратная совместимость с идиомами оболочки не была приоритетом.
Во многих случаях это хорошо... у многих стандартных оболочек есть действительно глупые способы делать что-то, только потому, что это всегда делалось именно так. "do/done", "case/esac", "if/fi"? Это безумие, с которым рыба уходит.
Это стоит посмотреть.
Ответ 5
Поскольку я считаю, что я тот человек, который предложил использовать что-то другое, кроме C Shell, возможно, мне следовало бы слегка подкрепить мои замечания, а затем поддержать тех, кто сказал "bash в Linux, оболочку Korn на других платформах (если там не установлен bash).
Скорее, как редакторы (вы предпочитаете vim
или emacs
), выбор оболочки отчасти является вопросом привычки и отчасти вопросом предпочтения. Есть много таких, как C shell, хотя я считаю, что он менее прост в программировании, чем Bourne shell и производные. То, что у меня есть в моем .cshrc, действительно эквивалентно exec /bin/ksh
(это не тождественно, потому что я хочу выполнить оболочку входа - тот, который читает профиль и т.д.), Но я бы никого не осуждал за используя оболочку C или производную, если это осознанное решение.
Если вы решите, что хотите использовать что-то другое, отличное от C-оболочки, то вы в основном находитесь в лагере оболочки Bourne, для которого стандарт POSIX более или менее указывает ожидаемое поведение, а затем различные оболочки, то есть Bourne, Korn или Born Again - добавьте (или, в случае классической оболочки Bourne, вычесть) несколько функций. Если вашему коду может потребоваться переместить Linux на HP-UX, Solaris или AIX (сохранившееся трио классических вариантов AT & T-производных Unix), тогда вам следует подумать над тем, чтобы вы могли писать сценарии оболочки в классической оболочке Bourne, хотя оболочка Korn также довольно безопасна. Заметим, однако, что в Linux вы можете написать #!/bin/sh
и получить Bash, на других платформах вы получите оболочку Bourne.
Я переключаюсь между оболочкой Korn и bash без серьезных проблем - и редко с небольшими проблемами. Я стараюсь держаться подальше от тех уголков любого языка, который не определен четко, - который имеет тенденцию означать "определенный в обоих". Еще одна проблема для пользователей Linux заключается в том, что инструменты GNU имеют больше возможностей, чем классические версии Unix, и вы можете потерять переносимость не из-за созданных вами конструкций программирования оболочки, а из-за параметров команды, которые вы используете. Опыт и свободный доступ к страницам руководства других систем чрезвычайно помогают.
Ответ 6
Я обычно придерживаюсь bash, потому что он более дружелюбен, чем прямой sh, и это значение по умолчанию для каждого дистрибутива, который я использовал полу-регулярно (SuSE, RHEL, Ubuntu, Slackware).
Если вы планируете писать переносные сценарии оболочки, убедитесь, что все они запущены в режиме реального времени.
Ответ 7
Bash. Он стандартный.
Ответ 8
Проблема с csh заключается в том, что это дерьмо для скриптинга, как описано здесь. Нет никакой реальной причины, по которой вы не должны использовать ее в качестве интерактивной оболочки, но большинство людей сбивает с толку, что нужно изучать две разные оболочки и не пытаться проверять биты их сценариев в командной строке, поэтому проще всего использовать то же самое для всего.
Очевидными кандидатами для интерактивной оболочки являются bash, dash, zsh и {pd,} ksh. Все они реализуют стандарт оболочки posix с некоторыми незначительными расширениями. Выберите, что вам нравится для интерактивного использования, я бы пошел с bash только потому, что он стандарт на linux, но все они имеют свои достоинства и особенно zsh, особенно популярны.
Если вы пишете script, который вы собираетесь переносить, используйте #!/bin/sh и убедитесь, что вы используете стандартный синтаксис командной строки posix. Если он работает как на bash, так и на ksh, он, вероятно, является стандартным. Есть несколько старых версий unix, которые имеют нестандартный /bin/sh, но я бы не стал с этим беспокоиться, если вы не знаете, что вам нужно. Большая проблема для переносимости - это все инструменты командной строки, которые вы вызываете из своего script.
Ответ 9
Никто не упомянул стандарт Debian для sh
, его оболочку Debian Almquist dash
. Он полностью совместим с POSIX и имеет очень быстрый запуск, поэтому Debian/Ubuntu использует его для /bin/sh
.
Поэтому я использую bash
для моей интерактивной оболочки, но только dash
для сценариев. Таким образом, я знаю, что мои скрипты, по крайней мере, совместимы с POSIX, и будут работать в любой другой оболочке POSIX.... Я знаю, что переносимость - это больше, чем оболочка, но там, где я рисую линию.
Ответ 10
Я не большой пользователь Ruby, но http://rush.heroku.com/ выглядит интересным
Ответ 11
Вероятно, лучше всего придерживаться bash просто потому, что он наиболее широко используется как оболочка и любые учебники или помощь, которую вы можете получить от кого-то, скорее всего, будет использовать bash. Тем не менее, я начал использовать zsh для всех моих скриптов, и я нашел, что он намного превосходит bash с точки зрения сценариев.
Ответ 12
Просто не используйте Korn Shell (ksh).
Если у вас нет идеального набора текста и никогда не нужно использовать клавишу backspace.
Ответ 13
Мне действительно нравится ksh. Он немного более последовательный, чем bash, потому что он не пытается поддерживать какие-либо конструкции csh. По моему опыту, tcsh наименее совместим с другими оболочками, и я избегаю этого. Я пытаюсь писать сценарии для sh, но у ksh есть некоторые приятные функции, такие как экспорт и установка переменной в одну строку. Я также пытаюсь сохранить совместимость с bash, поскольку он полнофункциональный и распространенный. Чтобы написать сценарии переносимой оболочки, что важнее, чем выбрать "лучшую" оболочку, вы можете обратиться к этой книге.
Портативное программирование оболочки: обширная коллекция примеров оболочек Bourne (серия HP Professional), автор Брюс Блинн (Мягкая обложка - 29 октября 1995 г.) amazon.com
Ответ 14
Я использую pdksh все время, не имея ничего близкого к идеальному набору текста (возможно, вам нужно исправить свой termcap?).
ksh является стандартом, csh является стандартом, а bash является "стандартным", но только для Linux. Лучше настроить таргетинг на ksh.
Ответ 15
Для написания реальных скриптов я предпочитаю ksh
, который имеет несколько расширений, полезных для программирования и исправляет одно из моих раздражителей для домашних животных.
bash
- это мое предпочтение для интерактивных сеансов, но это скорее вопрос личных предпочтений, чем что-либо еще. Просто убедитесь, что это оболочка типа Bourne.
Ответ 16
Я тоже пришел из csh, tcsh в bash. Это другое, но через некоторое время, по крайней мере так же хорошо, как и c-оболочки.
Для сценариев я бы рекомендовал ksh, потому что он доступен для большинства Unix (Solaris, HP-UX, OSF/1 (лучший UNIX когда-либо;) - за это время)), и он имеет хорошие функции. С Korn вы можете программировать большинство скриптов. Sporadicaly вы хотели бы получить больше, чем число, в качестве возвращаемого значения из функции, или у вас есть некоторые данные, которые вы не можете поместить в простой массив, или вам нужно что-то, что имеет лучшие возможности в случае regegs или когда-либо, то я бы предложил perl.
Ответ 17
Для сценариев попробуйте использовать тире в течение некоторого времени, чтобы получить хорошее представление о том, что является портативным. Если вы когда-либо использовали bash для написания оболочки script, явным образом объявляю bash в скриптах shebang.
Для вашей личной консоли используйте эксперимент с тем, что там. Найдите то, с чем вам удобно. Будьте эксцентричными и раздражайте всех своих друзей-системников, собрав оболочку, которая должна быть скомпилирована из источника для каждой машины, на которой вы хотите ее использовать.
Ответ 18
Я думаю, что FISH - лучшая, имеет подсветку синтаксиса (для команд, которые не существуют), и он может автозаполняться. И это очень легко узнать.
Ответ 19
Выберите один: а. Tcsh б. КШ с. ЗШ д. авторизоваться е. bash
Я бы использовал логин. Просто говорю.