Создайте файл .desktop, который откроется и выполните команду в терминале.

Я хотел бы знать, как написать команду Exec файла .desktop, чтобы открыть новый терминал и выполнить в нем скрипт оболочки. Скрипт оболочки работает и доступен всем пользователям. При запуске скрипта из терминала все работает, но не при попытке запустить скрипт из файла .desktop.

Вот некоторые комбинации, которые я уже пробовал:

Exec=gnome-terminal -x sh -c 'echo hello'
Exec=sh -c 'gnome-terminal echo hello'
Exec=sh -c 'echo hello'
Exec=echo hello

. Параметр терминала .desktop установлен в значение true.

47
задан 20 March 2014 в 17:59

5 ответов

Содержимое файла рабочего стола должно выглядеть так (см. , как создать файл .desktop с помощью текстовый редактор ):

[Desktop Entry]
Version=1.0
Name=Test        
Comment=Test the terminal running a command inside it
Exec=gnome-terminal -e "bash -c 'echo hello;$SHELL'"
Icon=utilities-terminal
Terminal=false
Type=Application
Categories=Application;

Или:

[Desktop Entry]
Version=1.0
Name=Test        
Comment=Test the terminal running a command inside it
Exec=bash -c 'echo hello;$SHELL'
Icon=utilities-terminal
Terminal=true 
Type=Application
Categories=Application;

В первом случае поле Терминал установлено на false (возможно, вопреки вашим ожиданиям), а во втором case установлен на true , но результат в обоих случаях одинаков.

52
ответ дан 20 March 2014 в 17:59
!#/bin/bash

gnome-terminal -e YOUR_COMMANDS

Создайте указанный выше файл.Не забудьте sudo chmod + x filename.sh

2
ответ дан 20 March 2014 в 17:59

Я делаю это. Первая строка текстового файла:! # / Bin / bash

Последующие строки текстового файла - это команды (сценарий оболочки).

Сохранить файл как something.sh

Открыть свойства файла и разрешить запуск файла как программы.

Теперь, когда файл дважды щелкают, я получаю возможность запустить его.

0
ответ дан 20 March 2014 в 17:59

Egyszerűen adja hozzá az

;$SHELL 

-t a parancsok végéhez.

Mint én , a snapd nem valami, ami a rendszer teljes sávszélességével frissíti a pillanatfelvételeket, amikor majdnem éjszaka dolgozom.

Tehát ez nekem egy .sh létrehozására szolgált. ] fájl kapcsolódik egy .desktop fájlhoz.
Az .sh fájl tartalma

echo <your password> | sudo -S systemctl stop snapd.service
sudo systemctl disable snapd.service;$SHELL

-S volt az .sh fájl első sorában. A STDINPUT fájlt az fájlba küldte. ] sudo parancs, amely jelszó megadása nélküli közvetlen végrehajtást jelent.

A .desktop fájl tartalma a következő volt:

[Desktop Entry]
Version=1.0
Name=Test
Comment=Test the terminal running a command inside it
Exec=gnome-terminal -e "/scripts/disable_snap.sh"
Icon=terminal
Terminal=true
Type=Application
Categories=Application;
3
ответ дан 8 October 2019 в 11:00

TL ;DR

[Desktop Entry]
Version=1.0
Name=Hello
Exec=sh -c 'echo hello; $SHELL'
Icon=utilities-terminal
Terminal=true
Type=Application

Как указано в спецификации записи рабочего стола , Terminal = true указывает программе запуска запускать ваш сценарий в окне терминала. Выбор эмулятора терминала зависит от настроек приложений по умолчанию и среды рабочего стола. В GNOME это gnome-terminal, в KDE - Konsole. (Без DE, в простой WM есть ошибка в xdg-open, и Terminal = true просто игнорируется, см. Проблему )

Вам нужна эта строка для запуска вашего скрипта и запустить оболочку после нее.

Exec=sh -c 'echo hello; $SHELL'
  1. sh -c 'COMMAND' запустить двоичный файл "sh", найденный в $ PATH, который выполняет КОМАНДУ (во многих системах sh является символической ссылкой на bash , но для переносимости предпочтительнее "sh")
  2. echo hello; $ SHELL делает две вещи. Сначала запускается echo hello а затем, после выполнения этой команды, запускает $ SHELL.

Если вы не добавите какую-то команду, ожидающую вашего выхода, эмулятор терминала просто запустит вашу программу и выйдет .


PS Если вы просто не хотите закрывать свой терминал, вы можете сделать

Exec=sh -c 'echo hello; read'

или

Exec=sh -c 'echo hello; sleep 5'

(чтение будет ждать, пока вы нажмете Enter, сон просто подождет 5 секунд)

PPS $ SHELL вероятно будет таким же, как последний раздел в / etc / passwd в соответствии с вашим пользователем.

$ man login

Устанавливаются значения для $ HOME, $ USER, $ SHELL, $ PATH, $ LOGNAME и $ MAIL ac- в соответствии с соответствующими полями ввода пароля.

0
ответ дан 5 January 2021 в 23:11

Другие вопросы по тегам:

Похожие вопросы: