[quote=“MisterFreez”]@ripat > Je n’ai jamais dis le contraire. Tout shell qui se respecte peut s’appeller sous le nom sh et a ce moment là s’execute d’une manière conforme à la norme posix et donc portable.[/quote]Tu peux effectivement l’appeler comme tu veux. C’est le shebang qui fera la différence. Tu peux appeler un script toto.sh, s’il comporte un shebang #!/usr/bin/ksh, il s’exécutera comme script ksh. Quant à la portabilité, ça dépend. Si tu utilises par exemple la syntaxe if [[ condition ]]; then… qui est supportée tant par bash que ksh, ce n’est pas POSIX, donc moins portable. Sur ubuntu, par exemple, le /bin/sh pointe vers un shell POSIX ash (dash) qui ne supporte pas cette syntaxe. Donc, si tu fais un script avec le shebang classique #!/bin/sh sur Debian, pas de problème puisque /bin/sh pointe par lien symbolique vers /bin/bash mais sur Ubuntu, il plantera. Ceci dit, pour tes scripts perso, la portabilité, tu t’assieds dessus! Tu cherches avant tout la lisibilité et la performance non?
[quote=“MisterFreez”]Ma question c’était la comparaison se faisait sur un script lancé en ksh face à un bash ou entre deux sh mais lancé l’un avec l’exécutable bash et l’autre avec ksh (encore une fois je pose une question au sujet de perf et pas de fonctionnalités).[/quote]Ça ne fait pas de différence. Si tu lances un script ksh depuis un shell zsh, bash ou csh il s’exécutera aussi vite car il s’exécutera dans un sous-process ksh. Sauf si tu le “source” depuis bash ou csh avec $ . script au lieu de $ ./script. Dans le premier cas, il exécutera les commandes du script comme si tu les avais tapées dans le shell parent. Dans le deuxième, il “ouvre” un shell ksh (process) et il y exécutera les commandes du script.
Encore une fois, je ne suis pas un spécialiste des shell, je fais simplement part de quelques observations.
[quote=“mattotop”]L’appel d’un script fait un fork de l’interpréteur appelant dans lequel est censé s’interpréter ce script, et l’utilisation du shebang correspond juste à un exec pour charger un nouvel interpréteur dans ce sous shell à la place du fils cloné de l’interpréteur appelant.[/quote]Ton explication dépasse un peu (!) mes connaissances en matière de shell. Je n’ai retenu que la dernière partie qui apporte également une réponse plus technique à MisterFreez. C’est le shebang qui fait tout.