Je veux utiliser ros
, conda
, pyenv
ou d'autres programmes qui nécessitent que vous sourciez un certain type de code d'initialisation avant de les utiliser. Mais ajouter tous leurs codes d'initialisation dans .bashrc
semble fastidieux au mieux et impraticable au pire ( conda
prend quelques secondes pour l'initialisation ).
Dans le meilleur des cas, j'aurais une sorte de fonction comme ceci:
ros2 () {
# Info
echo "Premier appel ros2, sourçage des fichiers nécessaires..."
# Source environnement ros2
source /opt/ros/eloquent/setup.bash
# Supprimer cette fonction
unset -f ros2
# Exécution initialement prévue
/opt/ros/eloquent/bin/ros2 $@
}
L'intention était:
- Le premier appel est redirigé vers une fonction qui effectuera la configuration nécessaire, puis se supprimera
- Les appels ultérieurs ne passeront pas par cette fonction enveloppe
Cependant, cela ne fonctionne pas, à cause du fait que unset
n'affecte pas le shell parent je suppose.
Y a-t-il un autre moyen de gérer automatiquement les programmes nécessitant du code d'initialisation (en bash et / ou zsh) ?