#1 Le 13/10/2021, à 10:39
- Q7frkz
Script lancement solution / source bashrc
Bonjour à vous,
J'ai codé un projet en python et pour le lancer, je dois faire dans un terminal:
roscore
qui lance un serveur
puis
cd Documents/Sources/LaunchGUI/
./LaunchGui
qui lance mon interface graphique
Le code de cette interface graphique est le suivant:
#!/bin/bash
source ~/.bashrc
python ./__init__.py
Il m'est demandé de faire une icone sur le bureau sur laquelle après double clic, j'automatise le lancement d'un terminal avec deux onglets qui lance les commande ci-dessus:
IHM.desktop
[Desktop Entry]
Type=...
Name=...
Generic...=...
Icon=...
Exec=/home/.../Documents/Sources/LaunchGUI/launchGui.sh
Cela marche très bien
launchGui.sh
#!/bin/bash
cd /home/.../Documents/Sources/LaunchGUI
source /home/.../.../setup.bash
gnome-terminal --tab -- bash -c "./LaunchGui & gnome-terminal --tab -- bash \"/opt/ros/melodic/bin/roscore; exec bash\" exec bash"
Ce script ouvre un terminal avec deux onglets dans Ubuntu puis lance ma solution et roscore
Après tout ca, mon soucis vient du fait que si je lance manuellement ma solution, celle-ci fonctionne parfaitement, si je lance via cette icone sur mon bureau tout se lance mais ma solution n'est pas entièrement fonctionnelle. Je ne comprends pas où est la faute mais je suis à peu près sûr que le fait de lancer de nouveaux terminaux pose problème avec des <<source .bashrc>> ou <<source setup.bash>>, je pense que les nouveaux terminaux ne profitent pas de variables qui sont utilisées quand je lance manuellement.
Bon c'est un peu le bordel ce que je vous présente mais bon si vous parvenez à me faire profiter de vos lumières je serai très heureux !
Merci beaucoup !
Hors ligne
#2 Le 13/10/2021, à 14:53
- kamaris
Re : Script lancement solution / source bashrc
je pense que les nouveaux terminaux ne profitent pas de variables qui sont utilisées quand je lance manuellement.
Si tu penses ça, tu devrais aller au bout et tracer leurs valeurs pour vérifier
Sinon tu sources setup.bash dans launchGui.sh alors que tu n'en avais pas parlé dans la procédure décrite en intro.
Ce sourçage est sans effet direct (à moins d'exports) sur les terminaux lancés ensuite : il faut le faire dans les terminaux en question si c'est utile à ce qui s'exécute dedans.
Tu as aussi inversé l'ordre de lancement entre le serveur et la GUI dans launchGui.sh, si jamais ça a de l'importance…
Hors ligne