Есть ли какие-либо веские причины использовать одну из основных оболочек Unix (bash, ksh, tcsh, zsh и другие?)?
Я могу сделать это сообщество вики, если кто-то пожелает.
Текущий:
bash
- Bourne again shell, оболочка по умолчанию в большинстве дистрибутивов Linux. Достойные характеристики;zsh
- наиболее функциональный, но по-прежнему редко используемый;ksh
- оболочка по умолчанию в Solaris, AIX и некоторых других системах;tcsh
- оболочка по умолчанию в различных * версиях BSD;Исторический:
sh
- оригинальная оболочка Bourne (выпущена в 1977 г.). Устарело bash;csh
- оригинальная оболочка C (выпущена в 1978 г.). Устарело на tcsh и ksh;Обратите внимание, что bash, ksh и zsh являются производными от синтаксиса sh, а tcsh - от синтаксиса csh. Это два совершенно разных синтаксиса.
рыбы - это новая оболочка, которая, возможно, более интересна, чем другие, не потому, что она обязательно имеет больше функций, а потому, что они просто работают по умолчанию и потому, что Fish стремится к удобству использования.
Несколько скриншотов (1, 2, 3, 4) достаточно, чтобы дать общее представление.
Fish теперь является оболочкой по умолчанию на моем Mac на работе. Иди разберись.
Если вы собираетесь изучать оболочку, отличную от sh
/bash
, ты мог бы просто пойти с zsh
. Я не думаю, что кто-то серьезно оспаривает, что это самая мощная и многофункциональная из альтернативных оболочек; Разумеется, вопрос о том, просто ли это раздувание, все еще обсуждается.
Я слышал хорошее о fish
, но никогда не прилагал усилий, чтобы возиться с ними.
Админы, которых я знаю, считают csh
и tcsh
быть мерзостями, которых следует избегать любой ценой, и я согласен с ними, несмотря на то, что мне никогда не приходилось проходить через любую оболочку.
Я бы порекомендовал хорошо знать bash, так как это один из самых распространенных (обычно Linux по умолчанию). Лично я люблю zsh как свою интерактивную оболочку. Он имеет отличные возможности завершения. Например, вы можете установить список хостов, и когда вы сделаете что-то вроде ssh Ser [tab], он будет знать, что нужно попытаться автоматически завершить один из этих хостов. Он также имеет рекурсивную подстановку, поэтому, если вы хотите найти все файлы jpeg в текущем и подкаталоге, вы можете использовать ls -ld **/*.jpg
. В zsh есть много забавных функций (поиск файлов .zshrc людей), и вы можете установить его как «совместимый с bash», чтобы было легко переключаться между ними. Если вы объедините это с GNU Screen, вы можете обнаружить, что работать с командной строкой станет довольно приятно.
Не забывай свой другой вопрос Наиболее распространенная оболочка Unix / Linux - самая популярная оболочка, наверное, не зря самая популярная ;-)
Как бы то ни было, большинство людей не переключаются между оболочками часто, поэтому будет сложно провести всестороннее сравнение различных вариантов; вы с большей вероятностью увидите разных людей, поддерживающих достоинства своих любимых снарядов. Судя по тому немногому, что я слышал о разных оболочках, все они предлагают одни и те же базовые функции (например, перенаправление ввода-вывода, история команд и т. Д.), Поэтому личные предпочтения, вероятно, будут большим компонентом.
Убедительной причиной использования ZSH, о которой не упоминалось, является режим vi и режим emacs..
Для тех, кто любит использовать свою мышечную память vi в оболочке, это отличная функция.
И для тех, кто предпочитает emacs, вы также можете использовать эти сочетания клавиш, но истинные сторонники emacs, вероятно, скажут, что emacs - их любимая оболочка.
;-)
Предпочтение в повседневном использовании действительно зависит от личного вкуса, однако при написании скриптов я стараюсь быть совместимым с posix ради переносимости.
Как и Heads Up: Ubuntu по умолчанию заменяет «sh» на «dash», что в прошлом приводило к некоторым проблемам с совместимостью с POSIX. Видимо, эхо-команды немного отличаются.