Forum Astuces.divers [Terminal] Faire marcher des scripts sh non posix sur Linux

Posté par  .
Étiquettes : aucune
0
22
mar.
2002
Si vous avez écrit des sripts shell sur un système UNIX proprio et que vous essayez de les faire tourner sur Linux, vous pouvez rencontrer quelques problèmes. Avant de vous lancer dans la reécriture de votre script, vous pouvez d'abord essayer cette commande qui peut vous faire gagner du temps:
set -o posix
(Cette commande permet de désactiver le mode posix)
Si vous voulez retourner dans le mode posix:
set +o
  • # Re: Faire marcher des scripts sh non posix sur Linux

    Posté par  . Évalué à 1.

    Si les scripts tournent mal, c'est fonction de l'interpreteur non ? Souvent GNU Bash.

    Qu'on trouverait avec le noyau hurd ou n'importe quel autre noyau. Mais qui ne serait pas forcement vrai avec un autre shell et le noyau Linux.

    Cette astuce s'applique donc en fait au système GNU.. couplé du noyau Linux ou pas...
  • # Re: Faire marcher des scripts sh non posix sur Linux

    Posté par  . Évalué à 1.

    Des script sh ou des script pdksh, tcsh, bash?
  • # Re: Faire marcher des scripts sh non posix sur Linux

    Posté par  . Évalué à 1.

    Les scripts comme le reste sous Unix/Linux sont définis, en théorie, par la norme Posix. L'option en question permet de supprimer la vérification de compatibilité Posix des scripts et donc d'en faire tourner un certain nombre qui ne respectent pas la norme. Il et clair que ce ne fera pas tourner des scripts ksh, csh ou autre qui ont une syntaxe particulière, voire un langage de script différent. Cependant, pour nombre de script sh (de type Bourne) ca fonctionne.
    • [^] # Tour d'horizon des scripts

      Posté par  . Évalué à 1.

      Au passage... du point de vue shells UNIX :
      - ksh, seul shell POSIX "universel", à condition de respecter la syntaxe strict ksh (et pas la compatibilité sh) qui devrait être nativement exécuté par bash
      - csh, non POSIX non maintenu
      - tcsh, idem mais maintenu
      - sh, reconnu en standard mais limité dans ses possibilités

      AMHA, csh et tcsh sont à poubelliser (dans cet ordre de priorité) car plus limités encore que le sh dans leurs constructions syntaxiques. De plus, le csh n'étant plus maintenu, il pose parfois quelques problèmes sur certaines plate-formes (voire corrections entre True64 de 4.0f à 5.1a).

      Pour le ksh, les optimisations des UNIX proprios sont très disparates : le ksh sous AIX est _bluffant_ de rapidité alors qu'il s'apparente au chargement d'une JVM (troll ?) sous SGI, fork un peu trop souvent sous True64 et se traine un poil sous Solaris.
      Pour commencer avec Motif CDE, une extension ksh, le dtksh, permet de s'initier à la logique callback & widgets même si c'est un poil lourd...

      Sous Linux, le bash propose de remplacer le ksh en étendant ses possiblités (syntaxe de boucles type C, ...) et est activement maintenu...
  • # Re: Faire marcher des scripts sh non posix sur Linux

    Posté par  . Évalué à 1.

    Rectificatif

    A mon avis, c'est le contraire coté syntaxe :
    POSIXLY_CORRECT
    If this variable is in the environment when bash starts, the
    shell enters posix mode before reading the startup files, as if
    the --posix invocation option had been supplied. If it is set
    while the shell is running, bash enables posix mode, as if the
    command set -o posix had been executed.

    A vérifier par les spécialistes...
  • # correction

    Posté par  (site web personnel) . Évalué à 1.

    D'après le manuel de Bash 2.05, si on tape 'set -o posix ', cela _active_ le mode posix. En tapant 'set +o posix ', on revient au mode par défaut, qui "diffère du standard POSIX 1003.2", donc, non-posix.

    SHELL BUILTIN COMMANDS

    set [--abefhkmnptuvxBCHP] [-o option] [arg ...]

    -o option-name
    The option-name can be one of the follow­ing:

    posix Change the behavior of bash where
    the default operation differs from
    the POSIX 1003.2 standard to match
    the standard (posix mode).


    The options are off by default unless otherwise
    noted. Using + rather than - causes these options
    to be turned off. The options can also be speci­
    fied as arguments to an invocation of the shell.
    The current set of options may be found in $-. The
    return status is always true unless an invalid
    option is encountered.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.