Какие вкусности присутствуют в оболочках UNIX без BASH? - PullRequest
5 голосов
/ 22 февраля 2009

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

Ответы [ 8 ]

5 голосов
/ 22 февраля 2009

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

3 голосов
/ 22 февраля 2009
  • bash: по моему опыту, большинство людей используют bash, отчасти потому, что это стандартная оболочка в большинстве систем Linux.

  • ksh: Многие системы Solaris вместо этого используют ksh, но это, похоже, теряет популярность для bash.

  • csh: Csh раньше был более популярным, но обычно его заменял tcsh. tcsh неплох для тех, кому очень нравится c-подобный синтаксис.

  • zsh: я не использовал zsh, но, похоже, он очень богат.

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

2 голосов
/ 22 февраля 2009

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

Зш, наверное, одна из самых современных оболочек. С ним можно делать разные забавные вещи

1 голос
/ 28 февраля 2009

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

У оболочки Korn и Bash много общего, в любом случае, в концепции. Как и / bin / sh, оболочка Korn изначально была выпущена AT & T и до недавнего времени не была открыта. Он имеет хороший механизм истории и выполняет блокировку файлов для файлов состояния истории, поэтому, если они смонтированы на сетевых файловых серверах, несколько копий оболочки будут правильно записывать в файл истории, не мешая друг другу. Он также поддерживает синтаксис / bin / sh и включает в себя некоторые хорошие качества в / bin / csh. В ksh многое есть, и, как правило, это довольно хорошая оболочка, если вы можете ее найти. Я использовал его в Solaris, особенно когда работал в Sun. Я не хотел устанавливать ничего, что не поставлялось с ОС, поскольку я устанавливал новую ОС несколько раз в неделю, так что это был хороший выбор.

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

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

1 голос
/ 22 февраля 2009

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

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

Мне действительно нравятся обозначения POSIX $(cmd) вместо классических бэк-тиков

`cmd`

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

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

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

1 голос
/ 22 февраля 2009

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

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

1 голос
/ 22 февраля 2009

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

0 голосов
/ 22 февраля 2009

У меня был один подключенный для предоставления истории оболочки для каждой сессии.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...