o arquivo da área de trabalho não pode executar o script no terminal

2

Eu quero fazer um botão no meu lxpanel para lançar um programa que seja impresso em um pop-up lxterminal "Hello World!", então eu uso a técnica que eu implementei com sucesso antes no Debian 7, que é:

A) gedit / bin / hello.sh (conteúdos abaixo):

"#!/bin/bash
echo 'Hello World!';"

B) gedit / usr / share / aplicativos / hello1.desktop (abaixo):

1) [Desktop Entry]
2) Version=1.0
3) Type=Application
4) Name=Hello1
5) Comment=Test the terminal running a command inside it
6) Exec=lxterminal -e "/bin/hello.sh"
7) StartupNotify=true
8) Icon=utilities-terminal
9) Terminal=true
0) Categories=Utility;

  

C) Por último eu faço chown e chmod ambos os arquivos acima como abaixo:

-rwxr-xr-x 1 a adm 230 1月 1 13:02 /usr/share/applications/hello1.desktop*

-rwxr-xr-x 1 a adm 240 1月 1 12:57 /usr/share/applications/hello1.desktop~*

-rwxr-xr-x 1 a adm 194 1月 1 12:04 /usr/share/applications/hello.desktop*
-rwxr-xr-x 1 a adm 195 1月 1 12:03 /usr/share/applications/hello.desktop~*
-rwxrwxr-x 1 a adm 87 1月 1 12:35 /usr/share/applications//bin/hello.sh*

-rwxrwxr-x 1 a a 87 1月 1 12:25 /usr/share/applications//bin/hello.sh~*
-rwxrwxr-x 1 a adm 134 12月 13 09:56 /usr/share/applications//bin/hello_world.sh*

Infelizmente, não importa o que eu faça, o arquivo hello1.desktop só pode abrir um lxterminal em branco, e não há saída desejada: "Hello World!". Estou executando o lubuntu 14.04 e segui os seguintes tutoriais para vincular um arquivo da área de trabalho a um programa de script * .sh:

Create a .desktop file that opens and execute a command in a terminal
Starting a script in a Desktop icon
http://ubuntuforums.org/showthread.php?t=2194284
http://lkubaski.wordpress.com/2012/06/29/adding-lxde-start-menu-and-desktop-shortcuts/
http://forum.lxde.org/viewtopic.php?f=8&t=31647
http://forum.lxde.org/viewtopic.php?f=26&t=31373
https://bugs.launchpad.net/ubuntu/+source/lubuntu-default-settings/+bug/975152

Também fiz as seguintes variações para hello1.desktop : > > linha 10 (última) linha acima Eu também tentei sem ponto e vírgula.

Line 9 → false
Line 6:

Exec=sh /bin/hello.sh;
Exec=lxterminal -e "/bin/hello.sh"
Exec=/bin/hello.sh
Exec=sh -c /bin/hello.sh
Exec=lxterminal -x sh -c 'echo hello'
Exec=sh -c 'gnome-terminal echo hello'
Exec=sh -c 'echo hello'
Exec=sh /bin/hello.sh
Exec=sh -c /bin/hello.sh

  

Mas, no final, todos são iguais (exceto quando 'terminal = false (linha 9)' não há terminal (isso é óbvio)).
Eu posso ver "olá1" em "Sistema | Acessórios ", mas quando clico nele, aparece apenas uma tela em branco. No debian 7.5 LXDE wheezy isso é realmente fácil de fazer com sucesso, mas o que está errado no lubuntu 14.04 para torná-lo muito mais difícil?

Andrew

    
por afc888ny 01.01.2015 / 11:14

1 resposta

0

Eu consegui duplicar seu problema e ter uma solução.

Como sua pesquisa já informou, seu problema original foi:

Terminal=true

junto com:

Exec=lxterminal -e /bin/hello.sh

O único problema é que quando você usa:

Terminal=false

o terminal fecha após a execução do script, embora ele realmente execute seu script. Como o seu script produz uma saída tão pequena, não é humanamente possível ver isso acontecer, então parece uma "tela em branco".

Tanto quanto eu posso ver (do man lxterminal e do Google), não há nenhuma maneira específica de pedir ao lxterminal para permanecer aberto depois de ter executado um script, então você tem que mudar o script bash (ou seja, o seu hello.sh ) em si.

Por exemplo, você pode adicionar um dos itens a seguir ao final do seu script.

1.

echo "Press [ENTER] to exit" && read

2.

/bin/bash

No primeiro caso, o terminal aguardará o usuário pressionar [ENTER]. (Na verdade, digite algo seguido por [ENTER].)

No segundo, o terminal permanecerá aberto.

Para uma discussão sobre o problema geral de parar o shell de fechar após executar um comando, incluindo informações sobre outros emuladores de terminal, consulte: Como executar um script sem fechar o terminal?

A propósito, o ponto-e-vírgula no final do arquivo da área de trabalho não faz nada, então você também pode removê-lo.

Resumo: a única alteração que você precisa fazer no arquivo original da área de trabalho é Terminal = false, mas é necessário adicionar uma linha ao final do script bash para ver se o script foi executado.

    
por harlandski 01.01.2015 / 19:32