avec KSH, j'utilise la commande 'cp /usr1/appli/data /export/donnees' pour
faire une copie du répertoire data vers le répertoire donnees. cela
fonctionne très bien !
mais dans un script, la même commande génère un message d'erreur :
exdata[6]: /bin/cp: 0403-027 Liste de paramètres trop longue.
Ah, tiens, la norme dit que ça doit renvoyer vrai. J'aurai appris un truc aujourd'hui :-)
Oui, elle specifie meme l'algorithme pour un nombre d'arguments (hormis "[" et "]") de 2 ou 3.
Au dessus, c'est unspecified.
ce qui fait que [ "$a" = "$b" ] ne marche pas.
Effectivement. Enfin j'imagine qu'à peu près tous les sh sont cassés sur ce point, vu que tout le monde écrit « x"$a" = x"$b" ».
Oui, certaines versions de ksh ont aussi le probleme (et le Bourne shell, mais celui-ci n'est pas censé etre un sh conformant anyway).
-- Stéphane
Stephane Chazelas
2006-12-12, 22:14(+01), Moi:
$ bash -c 'printf "<%s>n" ${a-foo "" ""}' <foo>
on peut avoir le même avec sh ??
Je ne comprends pas ta question. Avec quel sh? Avec le sh d'un Linux (bash), tu auras la meme chose. Avec le sh d'un BSD (ash-ish) tu auras <foo>n<>n<>n, avec celui d'un Unix commercial <foo>n, <foo>n<>n ou <foo>n<>n<>n suivant la version de ksh, avec le Bourne shell (un sh dans un autre repertoire que le sh standard sur les Unix commerciaux), tu auras une erreur, sur les systemes ou sh est un zsh ou pdksh (comme certains Unix derivés de darwin ou FreeBSD) <foo>n<>n<>n.
Je n'ai pas croisé de sh ou de printf qui renvoie la bonne valeur. La plupart renvoie la valeur du premier byte du caractere d'euro (226) au lieu du code du caractere euro (0x20ac)
-- Stéphane
2006-12-12, 22:14(+01), Moi:
$ bash -c 'printf "<%s>n" ${a-foo "" ""}'
<foo>
on peut avoir le même avec sh ??
Je ne comprends pas ta question. Avec quel sh?
Avec le sh d'un Linux (bash), tu auras la meme chose. Avec le sh
d'un BSD (ash-ish) tu auras <foo>n<>n<>n, avec celui d'un
Unix commercial <foo>n, <foo>n<>n ou <foo>n<>n<>n suivant
la version de ksh, avec le Bourne shell (un sh dans un autre
repertoire que le sh standard sur les Unix commerciaux), tu
auras une erreur, sur les systemes ou sh est un zsh ou pdksh
(comme certains Unix derivés de darwin ou FreeBSD)
<foo>n<>n<>n.
Je n'ai pas croisé de sh ou de printf qui renvoie la bonne valeur.
La plupart renvoie la valeur du premier byte du caractere
d'euro (226) au lieu du code du caractere euro (0x20ac)
Je ne comprends pas ta question. Avec quel sh? Avec le sh d'un Linux (bash), tu auras la meme chose. Avec le sh d'un BSD (ash-ish) tu auras <foo>n<>n<>n, avec celui d'un Unix commercial <foo>n, <foo>n<>n ou <foo>n<>n<>n suivant la version de ksh, avec le Bourne shell (un sh dans un autre repertoire que le sh standard sur les Unix commerciaux), tu auras une erreur, sur les systemes ou sh est un zsh ou pdksh (comme certains Unix derivés de darwin ou FreeBSD) <foo>n<>n<>n.
Je n'ai pas croisé de sh ou de printf qui renvoie la bonne valeur. La plupart renvoie la valeur du premier byte du caractere d'euro (226) au lieu du code du caractere euro (0x20ac)
-- Stéphane
Marc
Stephane Chazelas wrote:
Je n'ai pas croisé de sh ou de printf qui renvoie la bonne valeur.
Comment font AIX ou Solaris pour être certifiés conformes si il y a des trucs connus comme ça ?
Stephane Chazelas wrote:
Je n'ai pas croisé de sh ou de printf qui renvoie la bonne valeur.
Comment font AIX ou Solaris pour être certifiés conformes si il y a des
trucs connus comme ça ?
le 12/12/2006 à 18:50, Moi a écrit dans le message <elmq0d$mc7$ :
Sur la plupart des Unix commerciaux, ksh == sh ksh est une implementation du sh standard. Sur les Unix à deux balles, style *.BSD, sh c'est sh.
C'est faux au moins pour OpenBSD où sh == ksh et pour FreeBSD où sh == ash (bien qu'il soit appelé sh). Pour NetBSD, je ne sais pas.
NetBSD: /bin/sh = /bin/sh ce n'est pas un lien
Benoit Izac
Bonjour,
le 16/12/2006 à 09:10, Moi a écrit dans le message <em09hf$9k4$ :
Sur la plupart des Unix commerciaux, ksh == sh ksh est une implementation du sh standard. Sur les Unix à deux balles, style *.BSD, sh c'est sh.
C'est faux au moins pour OpenBSD où sh == ksh et pour FreeBSD où sh == ash (bien qu'il soit appelé sh). Pour NetBSD, je ne sais pas.
NetBSD: /bin/sh = /bin/sh ce n'est pas un lien
FreeBSD non plus mais comme il est mentionné ici : <http://www.freebsd.org/cgi/cvsweb.cgi/src/bin/sh/TOUR?rev=1.7&content-type=text/x-cvsweb-markup> c'est bien dérivé d'ash.
Même chose pour NetBSD : <http://cvsweb.netbsd.org/bsdweb.cgi/src/bin/sh/TOUR?rev=1.9&content-type=text/x-cvsweb-markup>
Ils auraient très bien pu compiler le tout en /bin/ash et faire un lien (symbolique ou en dur) /bin/sh qui pointe dessus.
-- Benoit Izac
Bonjour,
le 16/12/2006 à 09:10, Moi <moi@ici.org> a écrit dans le message
<em09hf$9k4$1@gyptis.org> :
Sur la plupart des Unix commerciaux, ksh == sh
ksh est une implementation du sh standard.
Sur les Unix à deux balles, style *.BSD, sh c'est sh.
C'est faux au moins pour OpenBSD où sh == ksh et pour FreeBSD où
sh == ash (bien qu'il soit appelé sh). Pour NetBSD, je ne sais pas.
NetBSD: /bin/sh = /bin/sh
ce n'est pas un lien
FreeBSD non plus mais comme il est mentionné ici :
<http://www.freebsd.org/cgi/cvsweb.cgi/src/bin/sh/TOUR?rev=1.7&content-type=text/x-cvsweb-markup>
c'est bien dérivé d'ash.
Même chose pour NetBSD :
<http://cvsweb.netbsd.org/bsdweb.cgi/src/bin/sh/TOUR?rev=1.9&content-type=text/x-cvsweb-markup>
Ils auraient très bien pu compiler le tout en /bin/ash et faire un lien
(symbolique ou en dur) /bin/sh qui pointe dessus.
le 16/12/2006 à 09:10, Moi a écrit dans le message <em09hf$9k4$ :
Sur la plupart des Unix commerciaux, ksh == sh ksh est une implementation du sh standard. Sur les Unix à deux balles, style *.BSD, sh c'est sh.
C'est faux au moins pour OpenBSD où sh == ksh et pour FreeBSD où sh == ash (bien qu'il soit appelé sh). Pour NetBSD, je ne sais pas.
NetBSD: /bin/sh = /bin/sh ce n'est pas un lien
FreeBSD non plus mais comme il est mentionné ici : <http://www.freebsd.org/cgi/cvsweb.cgi/src/bin/sh/TOUR?rev=1.7&content-type=text/x-cvsweb-markup> c'est bien dérivé d'ash.
Même chose pour NetBSD : <http://cvsweb.netbsd.org/bsdweb.cgi/src/bin/sh/TOUR?rev=1.9&content-type=text/x-cvsweb-markup>
Ils auraient très bien pu compiler le tout en /bin/ash et faire un lien (symbolique ou en dur) /bin/sh qui pointe dessus.
-- Benoit Izac
Moi
Bonjour,
le 16/12/2006 à 09:10, Moi a écrit dans le message <em09hf$9k4$ :
Sur la plupart des Unix commerciaux, ksh == sh ksh est une implementation du sh standard. Sur les Unix à deux balles, style *.BSD, sh c'est sh.
C'est faux au moins pour OpenBSD où sh == ksh et pour FreeBSD où
sh == ash (bien qu'il soit appelé sh). Pour NetBSD, je ne sais pas. NetBSD: /bin/sh = /bin/sh
ce n'est pas un lien
FreeBSD non plus mais comme il est mentionné ici : <http://www.freebsd.org/cgi/cvsweb.cgi/src/bin/sh/TOUR?rev=1.7&content-type=text/x-cvsweb-markup> c'est bien dérivé d'ash.
Merci pour l'info, j'ai quand même commencé par un 2.2.5
Même chose pour NetBSD : <http://cvsweb.netbsd.org/bsdweb.cgi/src/bin/sh/TOUR?rev=1.9&content-type=text/x-cvsweb-markup>
je sais
Ils auraient très bien pu compiler le tout en /bin/ash et faire un lien (symbolique ou en dur) /bin/sh qui pointe dessus.
Ben moi sur mon NetBSD j'ai fait un lien bash sh pour qu'il supporte la connerie Linuxienne
Linux m'a tuer
Bonjour,
le 16/12/2006 à 09:10, Moi <moi@ici.org> a écrit dans le message
<em09hf$9k4$1@gyptis.org> :
Sur la plupart des Unix commerciaux, ksh == sh
ksh est une implementation du sh standard.
Sur les Unix à deux balles, style *.BSD, sh c'est sh.
C'est faux au moins pour OpenBSD où sh == ksh et pour FreeBSD où
sh == ash (bien qu'il soit appelé sh). Pour NetBSD, je ne sais pas.
NetBSD: /bin/sh = /bin/sh
ce n'est pas un lien
FreeBSD non plus mais comme il est mentionné ici :
<http://www.freebsd.org/cgi/cvsweb.cgi/src/bin/sh/TOUR?rev=1.7&content-type=text/x-cvsweb-markup>
c'est bien dérivé d'ash.
Merci pour l'info, j'ai quand même commencé par un 2.2.5
Même chose pour NetBSD :
<http://cvsweb.netbsd.org/bsdweb.cgi/src/bin/sh/TOUR?rev=1.9&content-type=text/x-cvsweb-markup>
je sais
Ils auraient très bien pu compiler le tout en /bin/ash et faire un lien
(symbolique ou en dur) /bin/sh qui pointe dessus.
Ben moi sur mon NetBSD j'ai fait un lien bash sh pour qu'il supporte la
connerie Linuxienne
le 16/12/2006 à 09:10, Moi a écrit dans le message <em09hf$9k4$ :
Sur la plupart des Unix commerciaux, ksh == sh ksh est une implementation du sh standard. Sur les Unix à deux balles, style *.BSD, sh c'est sh.
C'est faux au moins pour OpenBSD où sh == ksh et pour FreeBSD où
sh == ash (bien qu'il soit appelé sh). Pour NetBSD, je ne sais pas. NetBSD: /bin/sh = /bin/sh
ce n'est pas un lien
FreeBSD non plus mais comme il est mentionné ici : <http://www.freebsd.org/cgi/cvsweb.cgi/src/bin/sh/TOUR?rev=1.7&content-type=text/x-cvsweb-markup> c'est bien dérivé d'ash.
Merci pour l'info, j'ai quand même commencé par un 2.2.5
Même chose pour NetBSD : <http://cvsweb.netbsd.org/bsdweb.cgi/src/bin/sh/TOUR?rev=1.9&content-type=text/x-cvsweb-markup>
je sais
Ils auraient très bien pu compiler le tout en /bin/ash et faire un lien (symbolique ou en dur) /bin/sh qui pointe dessus.
Ben moi sur mon NetBSD j'ai fait un lien bash sh pour qu'il supporte la connerie Linuxienne
Linux m'a tuer
Stephane Chazelas
2006-12-16, 12:36(+01), Moi: [...]
Ils auraient très bien pu compiler le tout en /bin/ash et faire un lien (symbolique ou en dur) /bin/sh qui pointe dessus.
Ben moi sur mon NetBSD j'ai fait un lien bash sh pour qu'il supporte la connerie Linuxienne
Linux m'a tuer [...]
Ne melangeons pas tout. bash est GNU, pas Linux. Et le pire de bash comme de sh vient de ksh qui vient d'AT&T comme la plupart de ce qui a fait Unix. Pareil pour le sh des BSDs qui vient de ash qui etait au depart une reimplementation libre du Bourne shell (encore d'AT&T) et qui a été modifié pas la suite pour etre conforme au standard, standard qui lui-meme est inspiré de ksh.
La connerie vient de ksh. Voir rc pour un shell mieux conçu. zsh a aussi corrigé pas mal des erreurs de ksh.
-- sTÉPhane
2006-12-16, 12:36(+01), Moi:
[...]
Ils auraient très bien pu compiler le tout en /bin/ash et faire un lien
(symbolique ou en dur) /bin/sh qui pointe dessus.
Ben moi sur mon NetBSD j'ai fait un lien bash sh pour qu'il supporte la
connerie Linuxienne
Linux m'a tuer
[...]
Ne melangeons pas tout. bash est GNU, pas Linux. Et le pire de
bash comme de sh vient de ksh qui vient d'AT&T comme la plupart
de ce qui a fait Unix. Pareil pour le sh des BSDs qui vient de
ash qui etait au depart une reimplementation libre du Bourne
shell (encore d'AT&T) et qui a été modifié pas la suite pour
etre conforme au standard, standard qui lui-meme est inspiré de
ksh.
La connerie vient de ksh. Voir rc pour un shell mieux conçu. zsh
a aussi corrigé pas mal des erreurs de ksh.
Ils auraient très bien pu compiler le tout en /bin/ash et faire un lien (symbolique ou en dur) /bin/sh qui pointe dessus.
Ben moi sur mon NetBSD j'ai fait un lien bash sh pour qu'il supporte la connerie Linuxienne
Linux m'a tuer [...]
Ne melangeons pas tout. bash est GNU, pas Linux. Et le pire de bash comme de sh vient de ksh qui vient d'AT&T comme la plupart de ce qui a fait Unix. Pareil pour le sh des BSDs qui vient de ash qui etait au depart une reimplementation libre du Bourne shell (encore d'AT&T) et qui a été modifié pas la suite pour etre conforme au standard, standard qui lui-meme est inspiré de ksh.
La connerie vient de ksh. Voir rc pour un shell mieux conçu. zsh a aussi corrigé pas mal des erreurs de ksh.