Как выполнить скрипт, просто дважды щелкнув, как .EXE-файлы в Windows?


116

Как сделать исполняемый скрипт bash двойным щелчком, как .exeфайлы в Windows? Я попытался создать модуль запуска и назначить ему скрипт , но есть два последствия:

  1. терминал мерцает, исчезает, и ничего не делается.
  2. Вы должны указать, чтобы работать в терминале, чтобы работать.

У меня есть сценарий, который устанавливает tomcat на автономный ПК, включая все зависимости tomcat в сценарии. Мне нужно, чтобы скрипт работал по двойному щелчку, как окна, так как большинство пользователей, использующих скрипт, не будут знакомы с Ubuntu.

Забудьте приведенное выше объяснение. Я хочу сделать скрипт, который можно запустить, дважды щелкнув по нему, без использования терминала. Кто-нибудь знает как?


Я думаю, что вы просто плохо пишете файл на рабочем столе. Можете ли вы опубликовать ( дословно ) программу запуска .desktop, которую вы написали?
Джед

Кроме того, вы видели это? askubuntu.com/q/34597/24694
Джед

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

3
Мур наконечники меня к этому, работал для меня: askubuntu.com/questions/286621/...
draoi

1
К вашему сведению для будущих посетителей: Nautilus, файловый менеджер по умолчанию в Ubuntu, очевидно, удалит возможность запуска исполняемых файлов в более новых выпусках в 2019 году из-за уязвимостей. Статья на тему и код коммита на GitLab с обсуждением
Сергей Колодяжный

Ответы:


134

Я проверил это, и он работал нормально. Убедитесь, что ваш сценарий начинается с правильного шебанга , например #!/usr/bin/env bash.

Затем выполните следующие действия:

  • Нажмите Alt+, F2чтобы запустить команду.
  • Введите dconf-editorи нажмите Enter.
  • В dconfg-editor перейдите по ссылке: org ➤ gnome ➤ nautilus ➤ preferences
  • Нажмите executable-text-activationи из выпадающего меню выберите:

    launch : запускать скрипты как программы.
    ИЛИ
    спросить : спросить, что делать через диалог.

    Скриншот

  • Закройте dconf-редактор. Это оно!

Альтернативный способ, используя терминал: Run:

gsettings set org.gnome.nautilus.preferences executable-text-activation 'launch'

Примечание . Файл должен быть исполняемым. Вам также может понадобиться изменить разрешение файла. Щелкните правой кнопкой мыши и установите «Разрешить выполнение файла как программы»

Скриншот

Источник .


Это сработало отлично. Просто отметьте, что «выпадающее меню» можно получить, нажав на значение, указанное справа executable-text-activation(значение по умолчанию - display).
ryanjdillon

5
для тех, кто не может вызвать приложение, вам нужно сначала установить его сsudo apt-get install dconf-editor
whale_steward

1
Это работает везде, кроме рабочего стола. Как я могу заставить его работать на рабочем столе? Я использую Xubuntu 14.10.
shrx

Есть ли способ сделать это в LXDE (для Lubuntu)?
childofsoong

Это прекрасно работает под slax unix, чтобы увидеть slax.org для действительно великолепной системы Unix, которую вы можете загрузить с флешки.
Раддевус

74

На Наутилусе (файлы АКА)

  1. Перейдите в Файлы ( Изменить на Unity (17.04 или ниже))> Предпочтения> вкладка Поведение

    Скриншот

  2. Измените настройки для исполняемого текстового файла.

    Скриншот


3
Теперь «Файлы -> Настройки». (17.04)
niry

Сладкий! Способ идти имхо.
codepleb

Как посмотреть вывод?
Amr Lotfy

10

В Ubuntu и во всех ОС Unix, afaik, по умолчанию ничего не установлено как исполняемый. Есть два способа сделать это.

  1. Щелкните правой кнопкой мыши сценарий или файл, который вы хотите выполнить. Перейдите в Свойства, затем на вкладку Разрешения. Установите флажок «Выполнить».

  2. Откройте Терминал cdв каталог, где находится файл. Тип . Это установит файл для выполнения.chmod ugo+x filename

Теперь ваши пользователи могут дважды щелкнуть по своему сердцу.


2
Он по-прежнему будет спрашивать вас, что делать с запуском в терминале или на дисплее или запустить ... Так что это не то, что мне нужно

Только этот ответ работал в Gnome Ubuntu 17.04 для создания исполняемого файла рабочего стола
Kunok

Это для выполнения файла на терминале, а не двойным щелчком по нему.
ДимиДак

8

Я думаю, что создание файла * .desktop здесь отсутствует:

$ cat shortcut-for-my-script.desktop
[Desktop Entry]
Type=Application
Terminal=true
Name=Click-Script
Icon=utilities-terminal
Exec=gnome-terminal -e "bash -c './script.sh;$SHELL'"
Categories=Application;

Если вы создаете более одного файла * .desktop для одного сценария, вы можете создавать несколько конфигураций , передавая различные параметры, что является очень удобным и удобным способом.


1
Это лучший ответ для Ubuntu. Обратите внимание, что вам, возможно, нет (или, вероятно, нет?) Необходимости указывать, Terminal=Trueи Exec=gnome-terminalесли вы буквально не создаете ярлык для скрипта, для которого вы хотите видеть вывод в окне терминала ... Также обратите внимание, что вы можете указать Iconна любой пользовательский PNG, вы можете захотеть ...
BuvinJ

6

Если вы используете XFce, то можете выполнить скрипт в Thunar, выполнив эту команду:

xfconf-query --channel thunar --property /misc-exec-shell-scripts-by-default \
             --create --type bool --set true

или используя графический интерфейс xfce4-settings-editorи создавая те же свойства.

Запустите xfce4-settings-editor, затем введите:

  • /misc-exec-shell-scripts-by-default

  • логический

  • ПРАВДА

изображение xfce4-settings-editor


Здесь о том, как достичь цели с помощью пользовательских действий в Thunar (без повторного включения этой «рискованной» функции).
Сиприкус

Также здесь о том, как использовать Zenity и получить вопрос «Редактировать или запустить?»
Сиприкус

2

Вы должны проверить 3 балла:

  • Конфигурация Nautilus / Nemo: https://askubuntu.com/a/286651/301025
  • Файл сценария должен быть исполняемым : https://askubuntu.com/a/275714/301025
  • Файловая система должна разрешать выполнение :

    1. Введите mountв консоли
    2. Проверьте, есть ли у вашей файловой системы noexecфлаг
    3. Снимите noexecфлажок, отредактировав /etc/fstabи перемонтировав модифицированную систему (например, перезагрузка работает)

1

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

Сценарий умрет, когда он закончит работу.


1
я сделал это, но какой пробный терминал просто мерцает и ничего не происходит

1

Исходя umaskиз значения по умолчанию, у вас нет прав на выполнение файлов по умолчанию, и вы должны изменить мод, чтобы получить права на выполнение, что-то вроде этого:

chmod u+x filename

1
Бульон Али уверен, что я сделал это, это очевидно

0

В качестве дополнения к ответу о Thunar : этот ответ снова включит предыдущую функцию Thunar для выполнения сценариев по двойному щелчку. Но эта особенность считалась угрозой безопасности.

Чтобы избежать этого, возможно, самое элегантное решение - это получить всплывающее окно с вопросом типа «Что вы хотите с этим файлом: запускать или редактировать?» (аналогично тому, что есть в других файловых менеджерах, таких как PCManFM и Nemo) при щелчке по этому файлу - с помощью Zenity: здесь .


Альтернативой могут быть пользовательские действия , возможно, лучшая функция Thunar.

Команда, которую я использую для запуска исполняемого текстового файла sh -c %f, предназначена для настраиваемого действия под названием «Run / Execute script».

введите описание изображения здесь

Условия появления просто «текстовые»:

введите описание изображения здесь

Аналогичная команда может быть использована для запуска в терминале такого сценария («Запуск в терминале»), при этом терминал Xfce4 остается открытым:

xfce4-terminal -H -x %f

введите описание изображения здесь

Необязательно, а может быть предпочтительно, чтобы скрыть такие параметры для всех текстовых файлов, кроме исполняемых, можно ограничить использование внешнего вида для .shфайлов (или .pyфайлов, в случае необходимости и т. Д.) В разделе «Условия внешнего вида»:

введите описание изображения здесь

- перед переименованием исполняемых файлов соответственно.


-1

Специально для Android Studio Вы можете следить за моим оригинальным ответом здесь :

Чтобы создать Desktop Launcher:

  • Нажмите Create Desktop Entry..из инструментов меню.

введите описание изображения здесь

  • Будет предложено ввести пароль, введите пароль вашего текущего логина.

  • Наконец, на экране Android Studio будет отображаться уведомление, например:

введите описание изображения здесь

  • Вы можете увидеть в Приложениях => Программирование => Android Studio , и вы можете увидеть на рабочем столе и после перезагрузки системы.

Спасибо. :)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.