Question

J'ai le problème suivant :J'ai de nombreux scripts de test qui sont actuellement en cours d'exécution en utilisant Boîte à outils MKS.Nous avons réussi à exécuter ces scripts en utilisant le shell mingw (msys) mais il existe d'autres scripts qui utilisent certains aliases qui sont intégrés à MKS Toolkit et non à bash.

Le problème est que personne ne veut modifier ces scripts, même pas automatiquement en utilisant un script.Cela signifie que je dois définir et utiliser ces alias.J'ai essayé de définir les alias dans le fichier "/etc/profile" du shell msys mais sans succès.J'ai aussi essayé d'utiliser shopt -s expand_aliases (dans "/etc/profile") mais ça ne marche pas non plus.

Quelqu'un pourrait-il partager une idée sur la façon dont cela pourrait être fait.Gardez à l'esprit que les scripts existants devront rester les mêmes.

Toutes les pensées ou idées sont les bienvenues.

Merci

Était-ce utile?

La solution 2

Cette réponse m'a donné la solution.Il s'agit de définir la variable BASH_ENV avant d'exécuter

bash script_name.sh

BASH_ENV pointera vers un script qui définit l'environnement du shell.Dans mon cas, pour exporter le aliases ainsi que les fonctions nécessaires, le script ressemble à ceci :

shopt -s expand_aliases

alias my_alias="echo my_alias"

function MyFunction {
    echo "MyFunction(DUMB):" $* 
}

export -f MyFunction

Autres conseils

Le /etc/profile ne provient que des shells de connexion.Si vous souhaitez que les alias soient dans votre script, vous devez les placer dans un fichier séparé et les sourcer dans le(s) script(s) qui en ont besoin.Par exemple:

alias.sh:

alias walrus="echo coo coo cah joo"

script.sh:

#!/bin/bash

shopt -s expand_aliases
. aliases.sh

walrus

et puis

$ ./script.sh
coo coo cah joo

C'est probablement la façon la plus raisonnable de procéder.Si vous insistez pour ne pas changer les scripts du tout, alors vous pourrez peut-être vous en sortir en les exécutant indirectement comme :

bash --rcfile aliases.sh -i script.sh

Cela indiquera à bash d'exécuter un shell interactif (et ainsi de développer les alias et de sourcer notre script d'alias avant d'exécuter script.sh).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top