web-dev-qa-db-fra.com

Comment puis-je exécuter un script shell avec un fichier de configuration .desktop?

J'essaie d'exécuter un script shell avec un fichier .desktop, mais il semble que cela ne fonctionne pas et génère une erreur de There was an error launching the application à chaque tentative. J'ai les fichiers sh et .desktop définir l'exécutable.

.fichier du bureau:

[Desktop Entry]
Name=Craftbukkit Server
Comment=run server
Exec="/home/ubuntu-gnome/Documents/Craftbukkit/run.sh"
Icon=/home/ubuntu-gnome/Documents/Craftbukkit/craftbukkit.png
Terminal=true
Type=Application

Le script:

#!/bin/bash
/usr/bin/Java -Xmx1024M -Xms1024M -jar /home/ubuntu-gnome/Documents/Craftbukkit/craftbukkit.jar -o false

Tous les chemins sont corrects.

Méthodes que j'ai essayées:

  • Exec="/home/ubuntu-gnome/Documents/Craftbukkit/run.sh"
  • Exec='/home/ubuntu-gnome/Documents/Craftbukkit/run.sh'
  • Exec=/home/ubuntu-gnome/Documents/Craftbukkit/run
  • Exec="/home/ubuntu-gnome/Documents/Craftbukkit/run.sh"
  • Exec=gnome-terminal -e "/home/ubuntu-gnome/Documents/Craftbukkit/run.sh"
  • Exec=bash -c 'cd /home/ubuntu-gnome/Documents/Craftbukkit/ && ./run.sh'

De manière remarquable, j'ai essayé plusieurs méthodes. Quelqu'un peut-il m'aider avec une résolution à cela?

2
user271219

Merci à tous pour l'aide. J'ai réalisé que mon fichier .desktop avait un problème. J'ai remarqué que les propriétés du fichier .desktop étaient différentes de celles des autres fichiers .desktop de /usr/share/applications, en ce sens qu'il n'y avait aucune zone de texte Description, Commande ou Commentaire dans le mien.

J'ai sauvegardé le fichier .desktop de Color Picker sur le bureau et j'ai substitué mes informations, ce qui a permis son fonctionnement.

C’est ce que sont les propriétés -> de base du fichier .desktop.

properties

Le script

[Desktop Entry] 
Name=Minecraft-Server Comment=Run the Minecraft
Craftbukkit Server
Icon=/home/ubuntu-gnome/Documents/Craftbukkit/craftbukkit.png
Exec='/home/ubuntu-gnome/Documents/Craftbukkit/run.sh' 
Terminal=true
Type=Application 
Categories=Minecraft;Server;CraftBukkit;
0
user271219

Peu de problèmes potentiels:

  1. Votre script a besoin d'un Shebang sur sa première ligne ... il devrait ressembler à ceci:

    #!/bin/bash
    /usr/bin/Java ...
    
  2. Votre script doit être marqué comme exécutable:

    chmod +x /path/to/script.sh
    
  3. Votre fichier .desktop doit également être exécutable ( éléments de politique de sécurité apparemment ):

    chmod +x /path/to/desktop-file.desktop
    
2
Oli

Voici ce que je voudrais utiliser pour créer le fichier ".desktop":

#!/usr/bin/env xdg-open    
[Desktop Entry]
Version=1.0
Type=Application
Name=MY APPLICATION NAME
Comment=THINGS I HAVE TO SAY ABOUT THE APPLICATION
Exec=sh -c "cd /PATH_TO_SH_FILE_FOLDER; FILENAME.sh"
Categories=ENGINERRING;GRAPHICS;ETC
Icon=/PATH_TO_ICON_IMAGE_FILE

Pour ce qui précède, modifiez les parties du code contenant uniquement des majuscules pour qu'elles correspondent à votre contexte (qui ne doit pas nécessairement être composé uniquement de majuscules). Vous pouvez ajouter Terminal = true si vous voulez voir la fenêtre du terminal.

Modifié à partir d'une réponse que j'ai donnée à une question connexe ici: Le lien vers .exe ne lance pas Wine

2
Ronald Chua

Essayez de toujours utiliser des chemins absolus dans ces scripts. Découvrez quel chemin a l'exécutable Java avec:

which Java

Puis utilisez cela comme chemin dans votre script:

/path/to/Java -Xmx1024M -Xms1024M -jar /path/to/craftbukkit.jar -o false

Notez que vous devez également donner le chemin complet à craftbukkit.jar.

0
chaos