Re: commande sh sous Ubuntu

Top Page

Reply to this message
Author: prc
Date:  
To: Romain Touzé
CC: La Guilde
Subject: Re: commande sh sous Ubuntu
----- "Romain Touzé" <romain.touze@???> wrote:
> Sous linux d'après ce que j'ai vu, sh, n'existe pas. Il s'agit d'un
> alias / redirection vers bash.
> Pour le même besoin, bash a un mode "posix" qui le fait vraiment agir
> comme sh (je ne me rappelle plus de l'option -> man bash).


Oui, donc il existe :)

sh sous Unix est depuis l'antiquité un Bourne shell ou un de ses dérivés, et non plus l'œuvre originale de Ken Thompson.

Par exemple sous OpenBSD :
http://www.openbsd.org/cgi-bin/man.cgi?query=sh&sektion=1&format=html

NetBSD en a dérivé ash.
Debian utilise de plus en plus pour les scripts systèmes un dérivé de ash, dash, plus strict et léger que bash...
http://en.wikipedia.org/wiki/Debian_Almquist_shell

Ça fait bien longtemps que les scripts 'sh' écrits par des Linuxiens tournent généralement sans problème dans bash.
L'inverse est moins vrai, on trouve de plus en plus de bash'ismes dans des scripts supposés portables (#!/bin/sh)...

D'aucuns diront (pour le troll) qu'il en est Un pour les amener tous et dans les ténèbres les lier, zsh.


Sinon pour la compatibilité dans bash :
1)
       Brace expansion introduces a  slight  incompatibility  with  historical
       versions  of sh.  sh does not treat opening or closing braces specially
       when they appear as part of a word, and preserves them in  the  output.
       Bash  removes  braces  from  words as a consequence of brace expansion.
       For example, a word entered to sh as file{1,2} appears  identically  in
       the  output.  The same word is output as file1 file2 after expansion by
       bash.  If strict compatibility with sh is desired, start bash with  the
       +B option or disable brace expansion with the +B option to the set com-
       mand (see SHELL BUILTIN COMMANDS below).
2)
       --posix
              Change the behavior of bash where the default operation  differs
              from the POSIX standard to match the standard (posix mode).



Bien cordialement,

--
Pierre Carrier, Technical Support Engineer
Production Support, EMEA office
Global Support Services
Red Hat, Inc.