如何像双击.exe
Windows中的文件一样使bash脚本可执行?我尝试创建启动器并将脚本分配给它,但是有两个结果:
- 终端闪烁,消失,什么也没做。
- 您必须指定在终端中运行才能工作。
我有一个脚本在脱机PC上安装tomcat,包括该脚本中tomcat的所有依赖项。我需要使脚本像Windows一样双击运行,因为大多数使用该脚本的人都不熟悉Ubuntu。
忘记上面的解释。我想制作一个无需双击即可运行的脚本,而无需使用终端。有人知道吗?
如何像双击.exe
Windows中的文件一样使bash脚本可执行?我尝试创建启动器并将脚本分配给它,但是有两个结果:
我有一个脚本在脱机PC上安装tomcat,包括该脚本中tomcat的所有依赖项。我需要使脚本像Windows一样双击运行,因为大多数使用该脚本的人都不熟悉Ubuntu。
忘记上面的解释。我想制作一个无需双击即可运行的脚本,而无需使用终端。有人知道吗?
Answers:
我对此进行了测试,效果很好。确保您的脚本以正确的shebang开始,例如#!/usr/bin/env bash
。
然后,请按照下列步骤操作:
dconf-editor
并点击Enter。org ➤ gnome ➤ nautilus ➤ preferences
单击,executable-text-activation
然后从下拉菜单中选择:
launch:将脚本作为程序启动。
或
询问:通过对话框询问该怎么做。
关闭dconf编辑器。而已!
使用终端的另一种方法:运行:
gsettings set org.gnome.nautilus.preferences executable-text-activation 'launch'
注意:该文件应该是可执行的。您可能还需要更改文件的权限。右键单击并设置“允许将文件作为程序执行”
来源。
executable-text-activation
(默认值为display
)。
sudo apt-get install dconf-editor
我认为在这里缺少创建* .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文件,则可以通过传递不同的参数来创建多个配置,这是一种非常舒适且用户友好的方式。
Terminal=True
,Exec=gnome-terminal
除非您确实要为要在终端窗口中查看其输出的脚本创建快捷方式...还要注意,您可以指向Icon
任何自定义png,您可能想要...
如果您使用的是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
布尔型
真正
您必须检查3点:
文件系统必须允许执行:
mount
在控制台noexec
标志noexec
通过编辑/etc/fstab
并重新安装修改后的系统来删除该标志(例如,重新启动有效)当您在桌面中创建到SHEL脚本的启动或在命令行中执行任何操作时,请不要忘记向脚本发出信号,以在后台执行。
该脚本将在他完成工作后死亡。
根据umask
默认值,默认情况下您没有文件执行权限,必须更改mod以获得执行权限,如下所示:
chmod u+x filename
作为有关Thunar的答案的补充:该答案将重新启用Thunar的先前功能,以在双击时执行脚本。但是该功能被认为存在安全风险。
为了避免这种情况,也许最优雅的解决方案是打开一个弹出窗口,询问“您要对该文件做什么:运行还是编辑?”之类的问题。(类似于PCManFM和Nemo等其他文件管理器中的文件)-单击该文件时-使用Zenity:here。
另一种选择是自定义动作,也许是Thunar最好的功能。
我用于运行可执行文本文件的命令是sh -c %f
,用于名为“运行/执行脚本”的自定义操作。
出现条件只是“文本”:
可以使用类似的命令在终端中运行这样的脚本(“在终端中运行”),同时保持Xfce4终端打开:
xfce4-terminal -H -x %f
可选地,并且可能最好是,为了对除可执行文件之外的所有文本文件隐藏这样的选项,一种方法是在“外观条件”下将外观使用限制为.sh
文件(或.py
文件,如果是大小写等):
-在相应地重命名可执行文件之前。