J'ai ajouté quelques lignes à mon ~ / .bashrc comme
export JAVA_HOME=/opt/jdk1.6.0_22
Je l'ai acheté:
$ source ~/.bashrc $ env | grep 'JAVA' JAVA_HOME=/opt/jdk1.6.0_22
Ensuite, j'ai créé un script basic bash sous un dossier appelé scripts dans ma maison:
#!/bin/bash echo 'start' echo $(env | grep HOME) echo $(env | grep LOGNAME) echo $(env | grep JAVA) echo 'exiting' sleep 5 exit
Maintenant, si je le lance directement, je reçois le résultat attendu
$ cd ~/scripts $ bash 'myScript.sh' start HOME=/home/foo/.config LOGNAME=foo JAVA_HOME=/opt/jdk1.6.0_22 exiting
Cependant, je dois l'appeler d'une manière différente à l'aide de la commande suivante, et malheureusement, cela ne fonctionne pas de la même manière:
$ lxterminal --command "bash /home/foo/scripts/myScript.sh" start HOME=/home/foo XDG_CONFIG_HOME=/home/foo/.config LOGNAME=foo exiting
Il semble que .bashrc ne provient pas de cette façon. J'ai essayé avec .profile aussi, mais avec le même résultat. Existe-t-il un autre fichier issu de lxterminal lorsqu'il est appelé avec la commande ci-dessus?
La raison pour laquelle j'ai besoin de cette commande, c'est parce que je souhaite lancer ces mêmes scripts via des liens / lanceurs que j'ai ajoutés au menu de démarrage et qu'ils doivent être exécutés sur une fenêtre lxterminal.
Essayez de forcer bash
à utiliser le mode interactif:
lxterminal --command "bash -i /home/foo/scripts/myScript.sh"
Cela se produit parce que:
~/.bashrc
est lu en mode interactif;
~/.bash_profile
, ~/.bash_login
et ~/.profile
sont lus en mode connexion.
Voir Invocation chez man bash .