TL;DR
[Desktop Entry]
Version=1.0
Name=Hello
Exec=sh -c 'echo hello; $SHELL'
Icon=utilities-terminal
Terminal=true
Type=Application
Comme indiqué dans spécification de la saisie de données sur le bureau , Terminal=true
indique au lanceur de lancer votre script dans une fenêtre de terminal. L'émulateur de terminal choisi dépend de vos paramètres d'application par défaut et de votre environnement de bureau. Dans GNOME, c'est gnome-terminal, dans KDE, c'est Konsole. (Sans DE, en WM simple, il y a un bogue dans xdg-open, et Terminal=true
tout simplement ignorée, voir la question )
Vous avez besoin de cette ligne pour exécuter votre script et lancer un script après lui.
Exec=sh -c 'echo hello; $SHELL'
-
sh -c 'COMMAND'
exécuter le binaire "sh" trouvé dans $PATH qui exécute COMMAND (sur de nombreux systèmes, sh
est le lien symbolique vers bash
mais pour des raisons de portabilité, "sh" est préférable)
-
echo hello; $SHELL
fait deux choses. Premièrement, il exécute echo hello
puis, après l'exécution de cette commande, lance $Shell.
Si vous voulez pas ajoutez une commande qui attend que vous quittiez, un émulateur de terminal lancera simplement votre programme et sortie .
P.S. Si vous souhaitez simplement ne pas fermer votre terminal, vous pouvez faire ce qui suit
Exec=sh -c 'echo hello; read'
または
Exec=sh -c 'echo hello; sleep 5'
(la lecture attendra que vous appuyiez sur Entrée, le sommeil attendra 5 secondes)
P.P.S $SHELL
sera probablement la même que celle de la dernière section de la /etc/passwd
en fonction de l'utilisateur.
$ man login
Les valeurs de $HOME, $USER, $Shell, $PATH, $LOGNAME et $MAIL sont définies. ac sont définies en fonction des champs appropriés de l'entrée du mot de passe.