OVH Cloud OVH Cloud

Pourquoi tant de shell différents ?

42 réponses
Avatar
Clampin
Salut,

Ma question va peut être vous paraître un peut conne... mais pourquoi
dans le shell de mac os X (et dans tout les unix visiblement), il y a
tant de shell différents pour le terminal ?

Attention, ce n'est pas une critique, mais une simple question, très
conne je l'admet....
--
<http://www.clampin.com/>, l'actualité Mac vue par Clampin

10 réponses

1 2 3 4 5
Avatar
Anonyme
Bruno Jargot wrote:

Ensuite, le sh de MacOS X ne correspond pas au Bourne Shell de base que
l'on peut trouver sur d'autre Unix lorsque l'on appelle /bin/sh.


Très rares sont les unix actuellement dont le sh est un bourne shell
d'origine... Les /bin/sh sont en général des liens vers un bash, un zsh,
ou plus courant ksh...

--
Anonyme ( jayce <@> mosx.net )
********* MosX.net <http://www.mosx.net/> *********

Avatar
Anonyme
Laurent Pertois wrote:

mais pour
programmer, c'est une horreur : il est tellement différent des autres
qu'il est contre-intuitif, alors que ksh, zsh, bash, sh, ash et les
autres ont tous pour base le Bourne.


Forcément, pourtant, l'idée de (t)csh n'était-elle pas de s'inspirer du
c ?


Si, mais le C est loin d'être un langage de script... Et les langages de
scripts qui s'en inspirent aussi, donc... :-)

--
Anonyme ( jayce <@> mosx.net )
********* MosX.net <http://www.mosx.net/> *********


Avatar
FiLH
(Anonyme) writes:

FiLH wrote:

"Stephane Dupille" <sdupille+ writes:

Aucun Unix n'a de Bourn Shell de base. C'est neuf fois sur dix un
alias vers un autre shell qui tente de se comporter comme un Bourne
Shell classique. En fait, *le* Bourne Shell n'existe plus, c'est le
dahu des unices. :)


Solaris a un sh.

(Deux en fait, un lié dynamiquement et un statiquement).


Je n'ai plus de solaris sous la main, mais je suis quasiement sur que le
sh de solaris est un ksh se comportant comme un sh...


ls -l /bin/sh
-r-xr-xr-x 4 root root 95488 Apr 7 2002 /bin/sh
ls -l /bin/ksh
-r-xr-xr-x 3 root bin 201052 Feb 11 2004 /bin/ksh

Quasiement comme tu dis...

FiLH

--
FiLH photography. A taste of freedom in a conventional world.
Web: http://www.filh.org e-mail
FAQ fr.rec.photo : http://frp.parisv.com/
Sitafoto la photo a Bordeaux : http://sitafoto.free.fr/



Avatar
Stephane Chazelas
2004-10-18, 23:02(+02), Anonyme:
[...]
Je n'ai plus de solaris sous la main, mais je suis quasiement sur que le
sh de solaris est un ksh se comportant comme un sh...


Non, le /bin/sh de Solaris est un des rares a etre un shell
Bourne. Ca pose d'ailleurs de grands problemes des qu'on veut
porter des scripts sur cette plateforme.

Le shell POSIX conformant sous Solaris se trouve dans
/usr/xpg4/bin/sh.

Le PATH par defaut de Solaris n'a pas /usr/xpg4/bin, mais
getconf PATH renvoie /usr/xpg4/bin avant /bin...

Les system(3) et popen(3) de la libc utilisent soit
/usr/xpg4/bin/sh, soit /bin/sh suivant comment l'application a
ete compilee (par defaut, c'est /bin/sh toutefois).

--
Stephane

Avatar
FiLH
Stephane Chazelas writes:

2004-10-18, 23:02(+02), Anonyme:
[...]
Je n'ai plus de solaris sous la main, mais je suis quasiement sur que le
sh de solaris est un ksh se comportant comme un sh...


Non, le /bin/sh de Solaris est un des rares a etre un shell
Bourne. Ca pose d'ailleurs de grands problemes des qu'on veut
porter des scripts sur cette plateforme.


Quel genre de grands problèmes ?

FiLH

--
FiLH photography. A taste of freedom in a conventional world.
Web: http://www.filh.org e-mail
FAQ fr.rec.photo : http://frp.parisv.com/
Sitafoto la photo a Bordeaux : http://sitafoto.free.fr/


Avatar
Stephane Chazelas
2004-10-18, 23:02(+02), Anonyme:
[...]
mais pour
programmer, c'est une horreur : il est tellement différent des autres
qu'il est contre-intuitif, alors que ksh, zsh, bash, sh, ash et les
autres ont tous pour base le Bourne.




Maintenant, on peut faire le meme genre de comparaison entre sh
et csh qu'entre rc et sh. Il ne faut pas croire que les Bourne
shells sont forcement la panacee, c'est surtout que vu que c'est
utilisé universellement, on est un peu forcé de s'y coller.

Forcément, pourtant, l'idée de (t)csh n'était-elle pas de s'inspirer du
c ?


Si, mais le C est loin d'être un langage de script... Et les langages de
scripts qui s'en inspirent aussi, donc... :-)


Voir "Ch",

http://freshmeat.net/projects/ch/

FM> An embeddable C/C++ interpreter for
FM> scripting and numerical computing.

--
Stephane



Avatar
Stephane Chazelas
2004-10-19, 09:14(+02), FiLH:
Stephane Chazelas writes:

2004-10-18, 23:02(+02), Anonyme:
[...]
Je n'ai plus de solaris sous la main, mais je suis quasiement sur que le
sh de solaris est un ksh se comportant comme un sh...


Non, le /bin/sh de Solaris est un des rares a etre un shell
Bourne. Ca pose d'ailleurs de grands problemes des qu'on veut
porter des scripts sur cette plateforme.


Quel genre de grands problèmes ?
[...]


On est obligé soit de se cantonner a une syntaxe Bourne, soit
d'adapter la ligne #! /path/to/sh suivant le systeme.

Et sh n'est pas le seul probleme sur Solaris. Beaucoup de
commandes dans /bin sont antediluviennes (awk est un autre
/probleme/ connu de Solaris, bash et zsh sont des versions de
1999...).

--
Stephane



Avatar
FiLH
Stephane Chazelas writes:

2004-10-19, 09:14(+02), FiLH:
Stephane Chazelas writes:

2004-10-18, 23:02(+02), Anonyme:
[...]
Je n'ai plus de solaris sous la main, mais je suis quasiement sur que le
sh de solaris est un ksh se comportant comme un sh...


Non, le /bin/sh de Solaris est un des rares a etre un shell
Bourne. Ca pose d'ailleurs de grands problemes des qu'on veut
porter des scripts sur cette plateforme.


Quel genre de grands problèmes ?
[...]


On est obligé soit de se cantonner a une syntaxe Bourne, soit


Ah, ben c'est ce qu'il faut faire pour être portable quelque soit la
version de sh ! C'est pas un problème c'est une solution.

Rien de plus chiant que de tomber sur un script écrit par un petit
génie de ksh ou zsh ou autre qui comporte quelques astuces
intraduisibles de programmation.

Et sh n'est pas le seul probleme sur Solaris. Beaucoup de
commandes dans /bin sont antediluviennes (awk est un autre
/probleme/ connu de Solaris, bash et zsh sont des versions de
1999...).


gnu rulez.

FiLH
--
FiLH photography. A taste of freedom in a conventional world.
Web: http://www.filh.org e-mail
FAQ fr.rec.photo : http://frp.parisv.com/
Sitafoto la photo a Bordeaux : http://sitafoto.free.fr/




Avatar
Stephane Chazelas
2004-10-19, 10:19(+02), FiLH:
[...]
On est obligé soit de se cantonner a une syntaxe Bourne, soit


Ah, ben c'est ce qu'il faut faire pour être portable quelque soit la
version de sh ! C'est pas un problème c'est une solution.

Rien de plus chiant que de tomber sur un script écrit par un petit
génie de ksh ou zsh ou autre qui comporte quelques astuces
[surtout bash, de mon experience]

intraduisibles de programmation.


Oui, mais peu de personnes savent en fait faire la difference
entre Bourne et sh. Sur la plupart des Unix, sh n'est plus
Bourne. Une syntaxe de sh a ete standardisee. On peut s'appuyer
sur un texte pour ecrire des scripts pour les systemes
conformant a ce standard. Si on doit ecrire un script Bourne, on
doit s'appuyer sur *des* implementations du shell Bourne on
n'est jamais garanti qu'un script marchera sur telle ou telle
machine.

Note que ${var##pattern}, $(...), $((...)), "command", ~user
sont POSIX et pas Bourne.


Et sh n'est pas le seul probleme sur Solaris. Beaucoup de
commandes dans /bin sont antediluviennes (awk est un autre
/probleme/ connu de Solaris, bash et zsh sont des versions de
1999...).


gnu rulez.


Note que zsh n'est pas GNU. Il n'est pas sous GPL non plus
d'ailleurs.

--
Stephane


Avatar
FiLH
Stephane Chazelas writes:

2004-10-19, 10:19(+02), FiLH:
[...]
On est obligé soit de se cantonner a une syntaxe Bourne, soit


Ah, ben c'est ce qu'il faut faire pour être portable quelque soit la
version de sh ! C'est pas un problème c'est une solution.

Rien de plus chiant que de tomber sur un script écrit par un petit
génie de ksh ou zsh ou autre qui comporte quelques astuces
[surtout bash, de mon experience]

intraduisibles de programmation.


Oui, mais peu de personnes savent en fait faire la difference
entre Bourne et sh. Sur la plupart des Unix, sh n'est plus


Peu de personnes savent en fait faire des choses vraiment portables...

Bourne. Une syntaxe de sh a ete standardisee. On peut s'appuyer
sur un texte pour ecrire des scripts pour les systemes
conformant a ce standard. Si on doit ecrire un script Bourne, on
doit s'appuyer sur *des* implementations du shell Bourne on
n'est jamais garanti qu'un script marchera sur telle ou telle
machine.


C'est un sous ensemble de POSIX non ?

Je sais bien que ce serait parfait si POSIX était la base de
portabilité, mais hélas ce n'est pas le cas.

Le pb ici est d'utiliser le plus grand ensemble commun à tous les sh-like.

Les scripts d'install de paquetages divers et variés que j'utilise
fonctionnent parfaitemetn avec /bin/sh.


Note que ${var##pattern}, $(...), $((...)), "command", ~user
sont POSIX et pas Bourne.


Ça tombe bien je ne m'en sers jamais :)

f.g.


--
FiLH photography. A taste of freedom in a conventional world.
Web: http://www.filh.org e-mail
FAQ fr.rec.photo : http://frp.parisv.com/
Sitafoto la photo a Bordeaux : http://sitafoto.free.fr/



1 2 3 4 5