Разница между оболочкой korn и bash

Я совершенно новичок в Unix. В настоящее время меня попросили узнать обо всех KornShell (ksh) и Bash оболочки. Может кто-нибудь, пожалуйста, дайте мне краткий обзор этих двух?

Является ли термин " оболочка" синонимом " терминал"?

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

Ответ 1

Сообщение из UNIX.COM

Свойства оболочки

В приведенной ниже таблице перечислены большинство функций, которые, как я думаю, заставят вас выбрать одну оболочку поверх другой. Он не предназначен для окончательного списка и не включает каждую возможную функцию для каждой возможной оболочки. Функция считается только в оболочке, если в версии, поставляемой с операционной системой, или если она доступна, как скомпилированная непосредственно из стандартного дистрибутива. В частности, указанная ниже оболочка C - это доступная на SUNOS 4. *, значительное количество поставщиков теперь отправляет либо tcsh, либо свою собственную расширенную C-оболочку (они не всегда делают очевидным, что они отправляют tcsh.

Код:

                                     sh   csh  ksh  bash tcsh zsh  rc   es
Job control                          N    Y    Y    Y    Y    Y    N    N
Aliases                              N    Y    Y    Y    Y    Y    N    N
Shell functions                      Y(1) N    Y    Y    N    Y    Y    Y
"Sensible" Input/Output redirection  Y    N    Y    Y    N    Y    Y    Y
Directory stack                      N    Y    Y    Y    Y    Y    F    F
Command history                      N    Y    Y    Y    Y    Y    L    L
Command line editing                 N    N    Y    Y    Y    Y    L    L
Vi Command line editing              N    N    Y    Y    Y(3) Y    L    L
Emacs Command line editing           N    N    Y    Y    Y    Y    L    L
Rebindable Command line editing      N    N    N    Y    Y    Y    L    L
User name look up                    N    Y    Y    Y    Y    Y    L    L
Login/Logout watching                N    N    N    N    Y    Y    F    F
Filename completion                  N    Y(1) Y    Y    Y    Y    L    L
Username completion                  N    Y(2) Y    Y    Y    Y    L    L
Hostname completion                  N    Y(2) Y    Y    Y    Y    L    L
History completion                   N    N    N    Y    Y    Y    L    L
Fully programmable Completion        N    N    N    N    Y    Y    N    N
Mh Mailbox completion                N    N    N    N(4) N(6) N(6) N    N
Co Processes                         N    N    Y    N    N    Y    N    N
Builtin artithmetic evaluation       N    Y    Y    Y    Y    Y    N    N
Can follow symbolic links invisibly  N    N    Y    Y    Y    Y    N    N
Periodic command execution           N    N    N    N    Y    Y    N    N
Custom Prompt (easily)               N    N    Y    Y    Y    Y    Y    Y
Sun Keyboard Hack                    N    N    N    N    N    Y    N    N
Spelling Correction                  N    N    N    N    Y    Y    N    N
Process Substitution                 N    N    N    Y(2) N    Y    Y    Y
Underlying Syntax                    sh   csh  sh   sh   csh  sh   rc   rc
Freely Available                     N    N    N(5) Y    Y    Y    Y    Y
Checks Mailbox                       N    Y    Y    Y    Y    Y    F    F
Tty Sanity Checking                  N    N    N    N    Y    Y    N    N
Can cope with large argument lists   Y    N    Y    Y    Y    Y    Y    Y
Has non-interactive startup file     N    Y    Y(7) Y(7) Y    Y    N    N
Has non-login startup file           N    Y    Y(7) Y    Y    Y    N    N
Can avoid user startup files         N    Y    N    Y    N    Y    Y    Y
Can specify startup file             N    N    Y    Y    N    N    N    N
Low level command redefinition       N    N    N    N    N    N    N    Y
Has anonymous functions              N    N    N    N    N    N    Y    Y
List Variables                       N    Y    Y    N    Y    Y    Y    Y
Full signal trap handling            Y    N    Y    Y    N    Y    Y    Y
File no clobber ability              N    Y    Y    Y    Y    Y    N    F
Local variables                      N    N    Y    Y    N    Y    Y    Y
Lexically scoped variables           N    N    N    N    N    N    N    Y
Exceptions                           N    N    N    N    N    N    N    Y

Ключ к таблице выше.

Y Функция может быть выполнена с использованием этой оболочки.

N Функция отсутствует в оболочке.

F Функция может быть выполнена только с помощью функции shells         механизм.

L Библиотека readline должна быть связана с оболочкой для включения         этой функции.

Примечания к таблице выше

1. This feature was not in the original version, but has since become
   almost standard.
2. This feature is fairly new and so is often not found on many
   versions of the shell, it is gradually making its way into
   standard distribution.
3. The Vi emulation of this shell is thought by many to be
   incomplete.
4. This feature is not standard but unofficial patches exist to
   perform this.
5. A version called 'pdksh' is freely available, but does not have
   the full functionality of the AT&T version.
6. This can be done via the shells programmable completion mechanism.
7. Only by specifying a file via the ENV environment variable.

Ответ 2

Существуют версии с открытым исходным кодом ksh. Вы можете запустить его в Linux. Был более старый ksh для OSS, называемый pdksh, который действовал несколько иначе, чем новый ksh, и может быть, поэтому людям это не понравилось.

Есть несколько отличий - bash имеет большую часть того, что делает ksh, а затем некоторые дополнительные вещи. A script, написанный для запуска в ksh, скорее всего будет работать в bash просто отлично. Много различий связано с математикой, переменными, массивами, функциями и т.д. - bash просто кажется, что это намного больше, чем ksh

ksh is available on multiple platforms by default but bash would have to be specifically added. On the flip side though, most Linux distros come with bash and you have to add ksh if you want it.

Редактирование стиля vi, которое ksh используется по умолчанию, но не bash. Однако вы можете ввести "set -o vi" в bash, чтобы получить ту же функциональность.

one reason for using ksh for scripting is, this shell is available on nearly all existing flavours of *nix. Bash is not installed by default on all *nix.