Як виконати сценарій, просто двічі клацнувши на зразок файлів .EXE у Windows?


116

Як я можу зробити скрипт bash виконуваним, двічі клацнувши так само, як .exeфайли в Windows? Я спробував створити запуск і призначити сценарій до нього , але наслідки є два:

  1. термінал мерехтить, зникає, і нічого не робиться.
  2. Ви повинні вказати для запуску в терміналі, щоб працювати.

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

Забудьте вищезазначене пояснення. Я хочу зробити сценарій, який можна запустити, двічі клацнувши по ньому, не використовуючи термінал. Хтось знає як?


Я думаю, що ви просто погано пишете файл на робочому столі. Чи можете ви розмістити ( дослівно ) запущений вами запуску .desktop?
Jjed

Також ви це бачили? askubuntu.com/q/34597/24694
Jjed

Це просто пускова установка, де ви присвоюєте ім'я та команду, щоб зробити свою не таку велику ідею

3
Муру підказав мені це, працював для мене: askubuntu.com/questions/286621/…
draoi

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

Відповіді:


134

Я перевірив це, і воно спрацювало чудово. Переконайтеся, що ваш сценарій починається з правильного шебангу , наприклад #!/usr/bin/env bash.

Потім виконайте наступні дії:

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

    запуск : запуск сценаріїв як програми.
    АБО
    запитати : запитати, що робити через діалог.

    скріншот

  • Закрийте редактор dconf. Це воно!

Альтернативний спосіб, використовуючи термінал: Виконати:

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)?
дитина

Це чудово працює під slax unix - див. Slax.org для дійсно чудової системи Unix, з якої ви можете завантажуватись з палець.
raddevus

74

Про Наутілус (файли AKA)

  1. Перейдіть у меню Файли ( Редагувати в єдності (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

Це для виконання файлу на терміналі, а не подвійним клацанням по ньому.
DimiDak

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

або за допомогою gui xfce4-settings-editorта створення однакових властивостей.

Виконати xfce4-settings-editor, а потім ввести:

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

  • Булева

  • ІСТИНА

зображення xfce4-editor-editor


Ось, як досягти мети за допомогою спеціальних дій у Thunar (без повторного включення цієї "ризикової" функції).
cipricus

Також тут про те, як користуватися Zenity та отримати запитання "Редагувати чи запустити?"
cipricus

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значення defualt, ви не виконуєте дозволи для файлів за замовчуванням, і ви повинні змінити mod, щоб отримати дозволи на виконання, приблизно так:

chmod u+x filename

1
Бульон Алі впевнений, що я зробив це очевидно, щоб це зробити

0

Як доповнення до відповіді про Thunar : ця відповідь повторно дозволить попередній функції Thunar виконувати сценарії подвійним клацанням. Але ця особливість вважалася ризиком для безпеки.

Щоб уникнути цього, можливо, найелегантніше рішення - це отримати спливаюче вікно із запитанням на кшталт "Що ви хочете з цим файлом: запустити чи відредагувати?" (подібно до того, що ви маєте в інших файлових менеджерах, таких як PCManFM та Nemo), натискаючи цей файл - за допомогою Zenity: тут .


Альтернативою можуть бути власні дії , можливо, найкраща функція, яку має Thunar.

Команда, яку я використовую для запуску виконуваного текстового файлу sh -c %f, призначена для власної дії під назвою "Запустити / виконати сценарій".

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

Умови появи просто "текстові":

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

Аналогічна команда може бути використана для запуску в терміналі такого сценарію ("Запуск у терміналі"), зберігаючи термінал Xfce4 відкритим:

xfce4-terminal -H -x %f

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

За бажанням і, можливо, бажано, щоб приховати такі параметри для всіх текстових файлів, окрім виконуваних файлів, способом є обмеження використання зовнішнього вигляду .shфайлами (або .pyфайлами, якщо це справа тощо), під "Умовами зовнішнього вигляду":

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

- перш ніж відповідно перейменувати виконувані файли.


-1

Спеціально для Android Studio Ви можете переглядати мою оригінальну відповідь тут :

Щоб створити запуск робочого столу:

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

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

  • Буде запропоновано ввести пароль, ввести пароль поточного входу.

  • Нарешті це буде відображати сповіщення на екрані Android Studio на зразок:

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

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

Дякую. :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.