Какие лакомства присутствуют в оболочках UNIX без BASH?
=======================================================

Я использую 'bash' с тех пор, как я использовал Unix-Linux/Solaris. Теперь мне интересно узнать, что лучше использовать оболочки, такие как «ksh», «zsh»? *Что делают «вундеркинды»?*

Я частично отношусь к zsh (это как смесь ksh и bash). [guide](http://zsh.sunsite.dk/Guide/zshguide.html) имеет приятный обзор его возможностей. У этого [page](http://www.faqs.org/faqs/unix-faq/shell/shell-differences/) есть хорошая диаграмма, показывающая доступность различных функций в разных оболочках.



У меня была одна сфабрикована, чтобы обеспечить историю сеансов за сеанс.

Единственное, что здесь было, каждое окно имело собственную историю оболочки. Довольно удобно.



Я использую ksh93 по предпочтению. Это означает, что основы ksh доступны практически для любой системы, на которой я нахожусь, поэтому мой интерактивный опыт и 98% моего сложного профиля остаются неизменными.



* bash: По моему опыту, большинство людей используют bash, отчасти потому, что это стандартная оболочка в большинстве Linux-систем.
* ksh: Многие системы Solaris используют ksh вместо этого, но это, похоже, лишает популярность bash.
* csh: Csh был популярен, но, как правило, был заменен tcsh. tcsh не плохо для тех, кто очень удобен с синтаксисом типа c.
* zsh: Я не использовал zsh, но, похоже, он очень богат.

Лично я предпочитаю Баш, потому что он установлен практически на любой Unix-совместимой ОС, она очень универсальна, и это хороший компромисс между простым инструментом командной строки и язык сценариев.



`bash` немного медленный, но, как и многие программы FSF, он пытается включить все известные функции. Я использую `ksh93`, который в основном сходится с `bash`. Основным преимуществом `ksh` является то, что у него хороший интерфейс для расширения оболочки с помощью кода C. Также немного легче настроить, например, сделать ключ вкладки делать все, что угодно, в контексте. Недостатком является то, что завершение команды не встроено; вам нужно запрограммировать его.

Избегайте `csh` и его производные :-)



По моему опыту, очень мало лакомства в стандартных оболочек Unix (где это означает, что для меня, `csh`, `sh`, `ksh`), которые не присутствуют и в на наименее эквивалентная форма в `bash`. Следовательно, до тех пор, пока вам будет удобно, что `bash` будет на всех ваших машинах, вы также можете использовать его для получения максимальной функциональности.

 OTOH, если вы хотите иметь дело с переносимостью, вы, вероятно, будете использовать `ksh`, который достаточно близок к стандарту POSIX - с некоторыми расширениями (bash также довольно близок к стандарту POSIX, но с довольно большим расширением).

мне очень нравится POSIX `$(cmd) нотации вместо классического спина клещей

cmd 

(Это не было весело в Markdown!). Одной из основных причин любить его, что это гораздо, гораздо легче гнездо звонки:

gcclib=$(dirname $(dirname $(which gcc)))/lib 

```

Получение, что право на одной линии со спинкой-клещей достаточно глупо, что вы бы не пытаться превратить его в один -liner. Это находится в `ksh` и `bash`; он не находится в классической оболочке Bourne (`/bin/sh`, но имейте в виду, что `/bin/sh` на некоторых машинах не классическая оболочка Бурна, а `bash` в маскировке), ни в оболочке C.



Bash лучше всего знать для самой широкой совместимости, вы можете сидеть в основном в любом Unix, и он будет там.

Zsh - одна из самых современных оболочек, возможно. Там есть все виды сумасшедших забавных вещей, которые вы можете сделать с ним.



Если вы используете bash, и вы довольны этим, не нужно сразу менять его. Это хорошая оболочка. Зная историю этого, вы тоже об этом расскажете: Bourne Again SHell. Это была хорошая попытка создать лучшую оболочку, чем C-Shell и ее производные (например, tcsh), позволяя использовать синтаксис/bin/sh для сценариев (или для интерактивного использования), но добавляя некоторые из лучших функций csh (например, история и т. д.).

Корпус Korn и Bash имеют много общего, в концепции в любом случае. Например,/bin/sh, [Korn shell](https://en.wikipedia.org/wiki/Korn_shell) поступал от AT & T изначально и не был открыт по источникам до относительно недавнего времени. Он имеет хороший механизм истории и блокирует файлы в файлах состояния истории, так что если они установлены на сетевых файловых серверах, несколько копий оболочки будут правильно записываться в файл истории, не сбиваясь друг с другом. Он также поддерживает синтаксис/bin/sh и включает некоторые из хороших вещей о/bin/csh. В ksh есть много, и это, как правило, довольно хорошая оболочка, если вы можете ее найти. Раньше я использовал его на Solaris, особенно когда я работал в Sun. Я не хотел устанавливать ничего, что не приходило с ОС, поскольку я устанавливал новую ОС несколько раз в неделю, поэтому это был хороший выбор.

Теперь я использую либо Bash, либо zsh. Я предпочитаю zsh из-за его богатого набора функций для завершения команды и для написания функций оболочки вообще (для моих интерактивных оболочек - при программировании скриптов я придерживаюсь довольно стандартного материала оболочки Bourne).

 Как уже говорилось, лучше избегать любой версии C-оболочки, за исключением тех оболочек, которые предоставляют вам некоторые функции/bin/csh, но не производятся из кода/bin/csh.