如何仅通过双击Windows中的.EXE文件来执行脚本?


116

如何像双击.exeWindows中的文件一样使bash脚本可执行?我尝试创建启动器并将脚本分配给它,但是有两个结果:

  1. 终端闪烁,消失,什么也没做。
  2. 您必须指定在终端中运行才能工作。

我有一个脚本在脱机PC上安装tomcat,包括该脚本中tomcat的所有依赖项。我需要使脚本像Windows一样双击运行,因为大多数使用该脚本的人都不熟悉Ubuntu。

忘记上面的解释。我想制作一个无需双击即可运行的脚本,而无需使用终端。有人知道吗?


我认为您可能只是在编写桌面文件时表现不佳。您可以张贴(逐字)您编写的.desktop启动器吗?
杰德(Jjed)2012年

另外,你看到了吗?askubuntu.com/q/34597/24694
Jjed 2012年

它只是一个启动器,您可以在其中分配名称和命令来完成它,没什么大不了

3
穆鲁放倒我离开这一点,为我工作:askubuntu.com/questions/286621/...
draoi

1
仅供参考,以供将来的访问者使用:Ubuntu的默认文件管理器Nautilus显然将由于漏洞而在2019年取消在较新版本中运行可执行文件的功能。有关主题代码的文章在GitLab上进行了讨论
Sergiy Kolodyazhnyy

Answers:


134

我对此进行了测试,效果很好。确保您的脚本以正确的shebang开始,例如#!/usr/bin/env bash

然后,请按照下列步骤操作:

  • 点击Alt+ F2运行命令。
  • 输入dconf-editor并点击Enter
  • 在dconfg-editor中转到: org ➤ gnome ➤ nautilus ➤ preferences
  • 单击,executable-text-activation然后从下拉菜单中选择:

    launch:将脚本作为程序启动。

    询问:通过对话框询问该怎么做。

    屏幕截图

  • 关闭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 2015年

1
除台式机外,此功能均可在任何地方使用。如何使它也可以在桌面上运行?我正在使用Xubuntu 14.10。
shrx

在LXDE中(Lubuntu)有没有办法做到这一点?
childofsoong,2015年

在slax unix上,这非常有用 -请参阅slax.org,以获取可以从拇指驱动器启动的真正出色的Unix系统。
raddevus 2015年

74

在鹦鹉螺上(AKA文件)

  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

这是为了在终端上执行文件,而不是双击文件。
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=TrueExec=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-settings-editor的图片


下面就如何实现与Thunar中自定义操作的目的(不重新启用认为“高风险”的功能)。
cipricus

另外,这里还介绍了如何使用Zenity并出现问题“编辑或运行?”。
cipricus



1

根据umask默认值,默认情况下您没有文件执行权限,必须更改mod以获得执行权限,如下所示:

chmod u+x filename

1
阿里肉汤确保我确实做到了这一点

0

作为有关Thunar的答案的补充:该答案将重新启用Thunar的先前功能,以在双击时执行脚本。但是该功能被认为存在安全风险。

为了避免这种情况,也许最优雅的解决方案是打开一个弹出窗口,询问“您要对该文件做什么:运行还是编辑?”之类的问题。(类似于PCManFM和Nemo等其他文件管理器中的文件)-单击该文件时-使用Zenity:here


另一种选择是自定义动作,也许是Thunar最好的功能。

我用于运行可执行文本文件的命令是sh -c %f,用于名为“运行/执行脚本”的自定义操作。

在此处输入图片说明

出现条件只是“文本”:

在此处输入图片说明

可以使用类似的命令在终端中运行这样的脚本(“在终端中运行”),同时保持Xfce4终端打开:

xfce4-terminal -H -x %f

在此处输入图片说明

可选地,并且可能最好是,为了对除可执行文件之外的所有文本文件隐藏这样的选项,一种方法是在“外观条件”下将外观使用限制为.sh文件(或.py文件,如果是大小写等):

在此处输入图片说明

-在相应地重命名可执行文件之前。


-1

专门用于Android Studio您可以在这里按照我的原始答案进行操作

要创建桌面启动器:

  • Create Desktop Entry..工具菜单上单击。

在此处输入图片说明

  • 将提示您输入密码,输入您当前登录的密码。

  • 最后,它将在Android Studio屏幕中显示通知,如下所示:

在此处输入图片说明

  • 您可以在Applications => Programming => Android Studio中看到,并且在重启系统后也可以在桌面上看到。

谢谢。:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.