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


5

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

5

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

  0

'zle' (http://zsh.sunsite.dk/Guide/zshguide04.html#l75) кажется классным. 22 фев. 092009-02-22 04:21:19


0

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

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

  0

Это через bash? 28 фев. 092009-02-28 02:15:36

  0

Я сделал это с ksh сам. Я не делаю этого так, но я думаю, что вы можете выполнить это с помощью zsh и, возможно, с bash. 28 фев. 092009-02-28 02:46:03

  0

На некоторых системах я получил это путем symlinkinging.history (или это .sh_history) в/dev/null. На других мне пришлось скомпилировать пользовательскую оболочку. 06 май. 092009-05-06 20:05:06


1

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

  0

+1 Если вы обычно работаете над одним (или некоторым другим небольшим числом) от * nix OS flavors, то любая оболочка в порядке. Если вы работаете над «некоторыми» или «множеством» различных вариантов ОС, тогда ksh должен быстро перейти к вершине вашего списка предпочтительных оболочек. Я никогда не нашел * nix, который не включал ksh в качестве оболочки по умолчанию. 07 июл. 092009-07-07 15:15:23


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

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

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

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

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


1

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

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


1

По моему опыту, очень мало лакомства в стандартных оболочек 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.


2

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

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


1

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

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

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

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