Forum Linux.général sourcer un script qui n'est pas dans le répertoire courant et sans ajouter son path

Posté par  (site web personnel) . Licence CC By‑SA.
1
12
nov.
2018

Bonjour à tous,
j'utilise pour mon travail des logiciels auxquels on a accès, la plupart du temps, en ajoutant au path les binaires du logiciel et des fois en créant des variables d'environnement dont le logiciel a besoin. Rien de bien compliqué mais évidemment, on a pas du tout envie de faire ça à la main. Du coup on met ça dans des scripts qui permettent de faire ce que je viens de dire et de lancer le logiciel. Sauf que si j’exécute mon script, et si je ne dis pas de bêtises, il s’exécute dans un sous-shell et donc si je récupère le prompt (#esperluette) je ne récupère pas mon environnement. La solution consiste donc peut-être à sourcer ce script plutôt que de l’exécuter. Sauf que si mon script est dans un dossier (cao-scripts/script-logiciel) qui n'est pas le dossier courant, même si j'ajoute cao-scripts a mon path, je ne peux pas simplement faire un
$ source script-logiciel

Au mieux je peux faire
$ source cao-scripts/script-logiciel
C'est pas compliqué mais c'est pas non plus le top de l'ergonomie.

Du coup, une solution pourrait être de faire un alias qu'on appellerait par exemple use et ce use sourcerait les scripts qui sont dans un répertoire prédéfini, par exemple (c'est du csh)
alias use 'source /cao-scripts/!*'
et donc ensuite faire
use script-logiciel

Donc on pourrait avoir l'impression ici que j'ai la solution et c'est plus ou moins vrai mais je viens surtout vous demander si vous connaissez d'autres solutions, peut-être plus élégante pour répondre à ma question.

Merci d'avance pour vos réponse.

Olivier

  • # Recherche récursive

    Posté par  . Évalué à 1. Dernière modification le 12 novembre 2018 à 13:38.

    Pas vraiment une solution à préconiser mais tu peux utiliser la syntaxe globstar avec:

    source **/script-logiciel

    Tu devrais quand même préfixer avec un répertoire d'entrée:

    source $CAO_SCRIPTS/**/script-logiciel

    • [^] # Re: Recherche récursive

      Posté par  . Évalué à 1. Dernière modification le 12 novembre 2018 à 17:05.

      Hum… Je propose :

      PATH=$CHEMIN:$PATH script-logiciel

      (perso, je fais toujours comme ça quand j'ai besoin d'une variable d’environnement pour un seul process')

      ajout : je suis HS hein ?

  • # Un peu vague, mais bon...

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

    Si ces logiciels ont besoin d'un environnement à eux, mais que tu ne veux pas polluer ton shell avec leur environnement, alors fais juste un script qui sert de wrapper. Il chargera l'environnement de tes autres scripts avant de le appeller.

    Si au contraire tu veux toujours avoir cet environnement dans ton shell courant, alors fais un source cao-scripts/environnement-logiciel dans ton $HOME/.bashrc.

    Dans tous les cas, l'environnement et l'appel du programme final sont deux choses distinctes. Il faut les découpler, pour que n'importe qui puisse charger un environnement, potentiellement différent.

  • # Des alias ?

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

    Qui sourceraient tes scripts de lancement…

    Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

    • [^] # Re: Des alias ?

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

      Bonjour,
      merci pour cette réponse. Je ne trouve pas vraiment ça complètement satisfaisant mais ca pourrait être un début de réponse.

      OL

      Les logiciels de traitement de texte sont à la rédaction ce que la 2CV est à l'automobile, une vieille voiture dont on se souvient avec nostalgie mais technologiquement dépassée

Suivre le flux des commentaires

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