Autostart Python script no Terminal Lubuntu

1

Estou usando o Lubuntu com o ODROID C0. Existe um script Python que precisa ser iniciado automaticamente. Naveguei para

[start menu]>preferences>Default applications for LXSession

, em seguida, navegou até a guia autostart e adicionou xterm -e "python /path/to/script.py" . O início automático do xterm funciona, mas lê o erro

xterm: Can't execvp "python: No such file or directory

Alguma idéia de como eu posso configurar corretamente o início automático deste script Python?

Obrigado.

    
por www139 06.09.2017 / 22:57

1 resposta

1

Use xterm -e python /path/to/script.py , sem as aspas.

Suas citações de " não estão se comportando como você deseja. xterm -e está tentando executar "python com /path/to/script.py" como seu argumento, em vez de python com /path/to/script como seu argumento. Nesse caso, você pode simplesmente omitir as aspas.

Em um script shell ou quando você executa um shell de forma interativa, citações são tratadas especialmente e remoção de cotação é executada. Mas isso não acontece com os comandos que você especifica na configuração LXSession Autostart Aplicativos iniciados manualmente .

Felizmente, mesmo que xterm -e no Ubuntu execute divisão de palavras em um argumento para tratá-lo como um comando, ele também aceita vários argumentos. É por isso que -e tem que ser a última opção - todo o resto é interpretado como parte do comando. Por exemplo, se você executar xterm -e nano foo , isso abrirá foo in nano em uma janela XTerm. Como man xterm diz:

   -e program [ arguments ... ]
           This  option  specifies  the  program  (and  its  command  line
           arguments) to be run in the xterm window.   It  also  sets  the
           window  title  and  icon name to be the basename of the program
           being executed if neither -T nor -n are given  on  the  command
           line.  This must be the last option on the command line.

Supondo que você não esteja tentando executar um script cujo caminho tenha espaços em seu nome, tudo o que você precisa fazer é remover as aspas:

xterm -e python /path/to/script.py

Duas outras advertências vêm à mente:

  • Quando o script terminar, python será encerrado e a janela do XTerm também será encerrada. Se você não quer isso, então você pode adicionar código ao script Python que aguarda a interação do usuário, ou você pode escrever um script de shell wrapper (ou qualquer tipo de script wrapper) que executa python /path/to/script.py e aguarda a interação do usuário.
  • O XTerm funciona bem no Lubuntu, mas o emulador de terminal gráfico padrão é LXTerminal . Caso você prefira usar isso, você pode usar lxterminal em vez de xterm . O comando lxterminal aceita -e e o trata da mesma maneira que xterm , então isso seria parecido com lxterminal -e python /path/to/script/py . Assim como no XTerm, o LXTerminal será encerrado quando o comando terminar de ser executado.
por Eliah Kagan 06.09.2017 / 23:45