web-dev-qa-db-ja.com

デスクトップファイルはターミナルでスクリプトを実行できません

ポップアップlxterminalでHello World!を出力するプログラムを起動するためにlxpanelにボタンを作成したいので、Debian 7で以前成功して実装したテクニックを使用します:

  1. gedit /bin/hello.sh(以下のコンテンツ):

    #!/bin/bash
    echo 'Hello World!';
    
  2. gedit /usr/share/applications/hello1.desktop(下):

    [Desktop Entry]
    Version=1.0
    Type=Application
    Name=Hello1
    Comment=Test the terminal running a command inside it
    Exec=lxterminal -e "/bin/hello.sh"
    StartupNotify=true
    Icon=utilities-terminal
    Terminal=true
    Categories=Utility;
    
  3. 最後のchownchmodは、上記の両方のファイルを次のように使用します。

    -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*
    

残念ながら、私が何をしても、hello1.desktopファイルは空のlxterminalしか開くことができず、出力はありません。

Lubuntu 14.04を実行していますが、次のチュートリアルに従ってデスクトップファイルを* .shスクリプトプログラムにリンクしました。

また、hello1.desktopに対して次のバリエーションを作成しました。

  • 10行目(最終行)-セミコロンなしで試しました。
  • 9行目(「ターミナル」行)-「false」を試しました
  • 6行目(「Exec」行)-これらを試しました:

    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
    

しかし、最終的にはすべて同じです(ただし、9行目のTerminal=falseに端末がない場合を除きます)。

[システム]-> [アクセサリ]の下にhello1が表示されますが、クリックするとまだ空白の画面が表示されます。 debian 7.5 LXDE wheezyではこれは本当に簡単にできますが、Lubuntu 14.04でこれをさらに難しくするのは何が悪いのでしょうか?

アンドリュー

2
afc888ny

私はあなたの問題を何とかして解決しました。

あなたの研究があなたに言ったように、あなたの元の問題は持っていた:

Terminal=true

一緒に:

Exec=lxterminal -e /bin/hello.sh

唯一の問題は、使用する場合:

Terminal=false

スクリプトは実際に実行されますが、スクリプトの実行後にターミナルが閉じます。スクリプトの出力が非常に少ないため、これが発生するのを人間が見ることはできないため、「空白の画面が飛び出している」ように見えます。

私が見る限り(man lxterminalおよびGoogleから)、lxterminalがスクリプトを実行した後に開いたままにするように特定の方法はないので、bashスクリプト(つまり、hello.sh)を変更する必要があります。 )自体。

たとえば、次のいずれかをスクリプトの最後に追加できます。

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

    • 端末は、ユーザーがヒットするのを待ちます Enter。 (実際には、後に続くものを入力する Enter
  2. /bin/bash

    • ターミナルは開いたままになります。

他のターミナルエミュレータに関する情報など、コマンドの実行後にシェルが閉じるのを停止する一般的な問題については、以下を参照してください。 ターミナルを閉じずにスクリプトを実行する方法?

ちなみに、デスクトップファイルの末尾にあるセミコロンは何もしないので、削除することもできます。

概要:元のデスクトップファイルに加える必要がある変更はTerminal=falseだけですが、最後に行を追加する必要がありますスクリプトが実行されたことを確認したい場合は、bashスクリプト。

1
harlandski