J'utilise Lubuntu avec l'ODROID C0. Il y a un script Python qui doit être démarré automatiquement. J'ai navigué vers
[menu de démarrage]> préférences> Applications par défaut pour LXSession
, puis naviguez jusqu'à l'onglet de démarrage automatique et ajoutez xterm -e "python /path/to/script.py"
. Le démarrage automatique xterm fonctionne mais lit l'erreur
xterm: Can't execvp "python: Aucun fichier ou répertoire de ce type
Des idées sur la façon de configurer correctement le démarrage automatique de ce script Python?
Merci.
xterm -e python /path/to/script.py
, sans les guillemets.Vos citations "
ne se comportent pas comme vous le souhaitez. xterm -e
tente d'exécuter "python
avec /path/to/script.py"
comme argument, au lieu de python
avec /path/to/script
comme argument. Dans ce cas, vous pouvez simplement omettre les guillemets.
Dans un script Shell ou lorsque vous exécutez un shell de manière interactive, les guillemets sont traités spécialement et suppression des guillemets est effectuée. Mais cela ne se produit pas avec les commandes spécifiées dans Configuration de LXSession → Démarrage automatique → Applications à démarrage manuel manuelles .
Heureusement, même si xterm -e
dans Ubuntu exécute division de Word sur un argument pour le traiter en tant que commande, il accepte également plusieurs arguments. C'est pourquoi -e
doit être la dernière option - tout le reste est interprété comme faisant partie de la commande. Par exemple, si vous exécutez xterm -e nano foo
, cela ouvre foo
dans nano
dans une fenêtre XTerm. Comme man xterm
dit:
- e programme [ arguments ... ] Cette option spécifie le programme (et ses arguments de ligne de commande ) À exécuter dans la fenêtre xterm . Il définit également le titre de la fenêtre Et le nom de l’icône comme nom de base du programme En cours d’exécution si ni - T ni - n sont donnés sur la ligne de commande . Ce doit être la dernière option de la ligne de commande.
En supposant que vous n'essayiez pas d'exécuter un script dont le nom contient des espaces, tout ce que vous avez à faire est de supprimer les guillemets:
xterm -e python /path/to/script.py
Deux autres mises en garde me viennent à l’esprit:
python
se ferme, puis la fenêtre XTerm se ferme également. Si vous ne le souhaitez pas, vous pouvez ajouter du code au script Python qui attend l'interaction de l'utilisateur, ou vous pouvez écrire un script shell wrapper (ou tout type de script wrapper) qui exécute python /path/to/script.py
puis attend pour l'interaction de l'utilisateur.lxterminal
au lieu de xterm
. La commande lxterminal
accepte -e
et la traite de la même manière que xterm
, ainsi cela ressemblerait à lxterminal -e python /path/to/script/py
. Comme avec XTerm, LXTerminal se ferme une fois l'exécution de la commande terminée.