J'utilise Ubuntu depuis la version 10.04 et je l'ai trouvé plus convivial que Windows. En ce moment, j'utilise 'Precise 12.04'. J'ai créé de nombreux lanceurs personnalisés pour les scripts bash et je n'ai jamais eu de problème jusqu'à hier.
J'ai installé une suite logicielle qui a plusieurs exécutables. L'exécutable principal abaqus
est situé dans optsoftwaresname
et est un lien symbolique vers l'exécutable abq610i
dans /opt/softwaresname/executables/
.
L'exe principal abaqus
nécessite des arguments de ligne de commande. J'utilise l'argument cae
, (c'est-à-dire abaqus cae
) mais avec une autre commande pour rendre les graphiques dans un meilleur mode, d'où l'appel final :XLIB_SKIP_ARGB_VISUALS=1 abaqus cae
J'ai créé un alias pour cette longue commande dans .bash_rc
déposer sous :
alias abaquscae="XLIB_SKIP_ARGB_VISUALS=1 abaqus cae"
Tout a parfaitement fonctionné, car l'alias exécute le logiciel. Étant un champion paresseux, j'ai pensé à créer un lanceur Cairo-dock pour cela. J'ai donc saisi abaquscae
dans la case "commande à lancer au clic" et coché "Exécuter dans un terminal". Cependant, à ma grande consternation, après avoir cliqué sur le lanceur, une erreur s'est produite ::
There was an error creating the child process for this terminal
Failed to execute child process "abaquscae" (No such file or directory)
Par conséquent, j'ai écrit un petit fichier de script bash "abaquscae.sh":
#!/bin/sh
"XLIB_SKIP_ARGB_VISUALS=1 abaqus cae"
et enregistré dans, l'a rendu exécutable et lors de son exécution dans bash shell, j'ai de nouveau eu l'erreur similaire, c'est-à-dire :
./abaquscae.sh: 2: ./abaquscae.sh: XLIB_SKIP_ARGB_VISUALS=1 abaqus cae: not found
Maintenant, je suis totalement perdu, j'ai essayé de nombreuses astuces, par exemple
1- supprimer les virgules dans le script bash,
2- le rendre dos2unix
,
3- en utilisant le chemin complet vers l'exécutable
mais ce script ne s'exécute pas via le terminal bash.
PROBLÈME :
La commande (ainsi que son alias) fonctionne correctement dans le terminal bash, mais lorsqu'elle est exécutée via un autre canal (par exemple, des scripts/lanceurs), le terminal ne parvient lamentablement pas à les reconnaître 🙁 ..
Si un expert a des conseils/informations sur la façon de résoudre ce problème, merci de le partager. Je serai très reconnaissant.
Réponse acceptée :
Je pense que le script devrait ressembler à ceci :
#!/bin/bash
XLIB_SKIP_ARGB_VISUALS=1 /opt/softwaresname/abaqus cae
Vous pouvez également créer le lanceur à l'aide de la commande suivante :
bash -c 'XLIB_SKIP_ARGB_VISUALS=1 /opt/softwaresname/abaqus cae'
La définition de variables d'environnement avant le nom du fichier exécutable dans une ligne de commande est une fonctionnalité des shells CLI (Command Line Interface). Si vous mettez VARIABLE=value /path/to/executable
dans un lanceur, le programme qui lit le lanceur (et lance effectivement l'exécutable) essaiera de trouver un fichier nommé "VARIABLE=valeur" et, bien sûr, échouera.
Cette commande lance bash
, le shell utilisateur par défaut dans Ubuntu, et dites-lui de s'exécuter (le -c
option) la chaîne « XLIB_SKIP_ARGB_VISUALS=1 /opt/softwaresname/abaqus cae », elle sera donc interprétée telle quelle lorsque vous la saisissez dans la CLI.