Forum Programmation.shell Fonctionnement de dash

Posté par  (site web personnel) .
Étiquettes : aucune
0
7
oct.
2011

Bonjour!

Je viens de passer deux jours à "jouer" avec des scripts bash pour les porter sous dash. Je recommande d'ailleurs le script perl "checkbashism" qui pointe immédiatement les problèmes! (dommage que le packaging de ce script soit si mauvais: le package standard impose une liste énorme de dépendances inutiles).

Mais mon problème est le suivant: sur un serveur, j'ai des applications qui fonctionnent de façon automatique mais sous un utilisateur spécifique (donc pas root) et en étant installées dans le home de cet utilisateur (afin de pouvoir avoir une version opérationnelle qui tourne, plus diverses autres versions en test, etc). Il faut donc que mes scripts qui gèrent ces applications puissent avoir un PATH et LD_LIBRARY_PATH modifiés (qui ajoutent typiquement $HOME/usr/bin et $HOME/usr/lib).

Sous bash, c'était facile: j'ajoutais des export dans .bashrc ou bien dans .profile, et ça marchait. Mais je ne trouve pas comment faire sous dash...

Donc y a-t-il un fichier de configuration de l'utilisateur qui est lu automatiquement par dash lorsqu'il démarre? Comment est-ce qu'un utilisateur est censé pouvoir agir sur sa configuration dahs?

Merci!

  • # d'après le man ...

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

    (paragraphe invocation)
    Dash lit les fichiers /etc/profile et .profile s'ils existent. Il peut aussi utiliser le contenu de la variable d'environnement ENV pour exécuter un autre fichier.

    RTFM :)

  • # Wrappe

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

    Tu wrappes ces logiciels dans des scripts idoines :

    #! /bin/sh
    
    export PATH=export LD_LIBRARY_PATH=exec bidule "$@"
    
    
    • [^] # Re: Wrappe

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

      étant donné que j'ai une dizaine de scripts et qu'il faut que ces scripts soient maintenables, j'évite de mettre des chemins codés en dur dedans... D'ou l'intérêt de rajouter des chemins en plus dans le PATH via un fichier de config unique de l'utilisateur.

      • [^] # Re: Wrappe

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

        Bah, wrappe toujours, mais en externalisant les parties communes. Ou mieux, si tous ces logiciels sont liés ou on assez de points communs, tu peux faire un script unique à lier sous plusieurs noms :

        #! /bin/sh
        
        export PATH=export LD_LIBRARY_PATH=progname="$(basename "$0")"
        
        exec "/…/$progname" "$@"
        
        
  • # Plus simple!

    Posté par  . Évalué à 5.

    #!/bin/dash
    /bin/bash monscript.sh   
    
    

    Et voilà, tu as un script dash qui fait tourner un code dash sans pb.

    Ooops.. => [X]

    THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.

Suivre le flux des commentaires

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