Je suis complètement nouveau sur Unix. Actuellement, on m'a demandé d'en savoir plus sur KornShell (ksh) et Bash Shell. Quelqu'un peut-il me donner un bref aperçu des deux?
Le terme "Shell" est-il synonyme de "terminal"?
Je comprends que je peux lire des documents sur les deux en ligne. Mais je crois qu'un aperçu d'un programmeur Unix expérimenté m'aidera à mieux comprendre.
Message d'UNIX.COM
Caractéristiques du shell
Ce tableau ci-dessous répertorie la plupart des fonctionnalités qui, je pense, vous inciteraient à choisir un Shell plutôt qu'un autre. Il n'est pas destiné à être une liste définitive et n'inclut pas toutes les fonctionnalités possibles pour chaque Shell possible. Une fonctionnalité n'est considérée comme étant dans un shell que dans la version fournie avec le système d'exploitation, ou si elle est disponible telle que compilée directement à partir de la distribution standard. En particulier, le shell C spécifié ci-dessous est celui disponible sur SUNOS 4. *, un nombre considérable de fournisseurs expédient désormais soit tcsh soit leur propre shell C amélioré (ils ne rendent pas toujours évident qu'ils expédient tcsh.
Code:
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
Clé du tableau ci-dessus.
La fonctionnalité Y peut être effectuée à l'aide de ce shell.
La fonctionnalité N n'est pas présente dans le shell.
F La fonctionnalité ne peut être effectuée qu'en utilisant le mécanisme de fonction des coques.
L La bibliothèque readline doit être liée au Shell pour activer cette fonctionnalité.
Notes sur le tableau ci-dessus
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.
Il existe des versions open source de ksh. Vous pouvez l'exécuter sous Linux. Il y avait un ancien ksh pour OSS appelé pdksh qui agissait quelque peu différemment du nouveau ksh et c'est peut-être pourquoi les gens ne l'aimaient pas.
Il y a plusieurs différences - bash a la plupart de ce que fait ksh et ensuite quelques trucs supplémentaires. Un script écrit pour s'exécuter dans ksh s'exécuterait probablement très bien dans bash. Beaucoup de différences concernent les mathématiques, les variables, les tableaux, les fonctions, etc. - bash semble simplement en avoir beaucoup plus que 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.
L'édition de style vi que ksh utilisait par défaut mais pas bash. Cependant, vous pouvez taper "set -o vi" dans bash pour obtenir la même fonctionnalité.
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.