Fusionner script shell et exécutable

Résolu
Bonjour,
Imaginons un script shell tout simple qui lance 2 exécutables l'un après l'autre du genre :

#!/bin/bash
./exeNumero1;
./exeNumero2;

J'aimerai fournir à l'utilisateur final un seul et unique fichier qui combine les exécutables et le script (en sachant que je ne possède pas les codes sources des exécutables :-) ).
Ainsi le fichier obtenu pourrait être lancé à partir de n'importe quel endroit de l'arborescence.

L'objectif ici est de ne pas donner en argument du script les chemins des exécutables et même de s'affranchir de leurs présences puisqu'ils seraient directement intégrés au fichier binaire !

Quelqu'un sait il si cela est possible ??

Merci pour votre aide.
(Je prends toutes les éventuelles solutions...Shell, langage C, ...)
Configuration: Windows Vista/Linux Debian Lenny
Firefox 3.5.3/Google Chrome

4 réponses

  1. Salut,
    après quelques tests, cette dernière solution me permet de recréer mes exécutables à l'endroit où se trouve le script.
    Je les exécute, puis les efface pour revenir à l'arborescence d'origine.
    C'est simple et transparent pour l'utilisateur final, parfait !
    Un grand merci à vous deux.
    A bientôt.
    1. Merci à vous deux pour vos réponses.
      La solution 1 est certes intéressante mais nécessite la présence de plusieurs fichiers sur le PC....je voudrais éviter cela...je veux vraiment un seul et unique "exécutable", sans aucun pré-requis (PATH) sur le PC hôte (limite je pourrais l'exécuter à partir d'une clé USB quelconque sur un PC quelconque....).

      La solution 2 me parait être ce que je cherche.....je vais voir ce que je peux en faire.....
      Je vous tiens au courant.
      Encore merci !
      1. Contributeur
        hello
        il faut convertir les exécutables en ascii avec base64, placer le texte dans le script et recréer les binaires. Evidemment, l'ascii peut être gros,

        # on convertit les exécutables en ascii
        base64 exeNumero1 > exe1.base64
        base64 exeNumero2 > exe2.base64

        # dans le script:
        cat << EOF > exe1.base64
        ## ici contenu du fichier exe1.base64, du genre :
        f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAEIMECDQAAABsFwAAAAAAADQAIAAIACgAJ
        AAAANIAECDSABAgAAQAAAAEAAAUAAAAEAAAAAwAAADQBAAA0gQQINIEECBMAAAAT
        AAABAAAAAAAAAACABAgAgAQIwAQAAMAEAAAFAAAAABAAAAEAAAAMDwAADJ8ECAy
        ...
        EOF
        cat << EOF > exe2.base64
        ## ici contenu du fichier exe2.base64
        EOF

        # on recrée les binaires
        base64 -d exe1.base64 > exeNumero1
        base64 -d exe2.base64 > exeNumero2
        chmod u+x exeNumero[12]

        # on peut les exécuter
        ./exeNumero1;
        ./exeNumero2;
        1. Contributeur
          Hello,

          Si tu crées un package qui va installer les fichiers au bon endroit et que tu ajoutes l'emplacement dans le PATH, peut-être pourras-tu lancer ton fichier depuis n'importe quel endroit ?

          Est-ce clair ?
          A+