如何在Linux上双击运行脚本?

12
我有一个脚本写好了(基本上是Ubuntu终端的命令),存在一个文件中。是的,这段代码以“

”开头。

I have a script written (which are basically the commands for the terminal for Ubuntu) on a file. Yes, the code starts with

#!/bin/bash

如何通过双击来运行此脚本?虽然可以使用终端运行,但我想通过桌面使其更加易于访问。

我只是试图模仿 Windows 上的 *.bat 文件。Windows 上的 *.bat 文件包含一系列在命令提示符上可操作的脚本,并且只需双击即可执行。


2
你正在使用什么窗口管理器(例如gnome、kde等)?你是在文件管理器窗口中点击名称吗?我假设你是在桌面上或文件浏览器中双击代表文件的图标,而不仅仅是在终端窗口中单击文件名(特别是因为你指示实际发生了某些事情)。 - clearlight
假设您正在使用GTK,请查看此链接http://askubuntu.com/a/664272 - clearlight
我投票关闭此问题,因为它涉及Linux,所以应该在unix.stackexchange.com上提问。 - Rob
@rob 是的,你可以在这里关闭这个问题。我会将它复制到unix.stackexchange.com上。 - pnkjmndhl
5个回答

17

按照以下步骤操作:

  • 按下 Alt+F2,输入 dconf-editor 并按 ``Enter。

  • 在 dconfg-editor 中进入:org ➤ gnome ➤ nautilus ➤ preferences

  • 单击 executable-text-activation,在下拉菜单中选择:

launch:启动脚本作为程序。

或者

ask:通过对话框询问要执行什么操作。

关闭 dconf-editor,就完成了!


输入命令“dconf-editor”并按回车键没有任何反应。我正在使用Linux Ubuntu16.04。 - pnkjmndhl
请查看此链接:http://askubuntu.com/questions/605965/gedit-does-not-launch-as-root-critical-file-log-c-error-no-gksu-probl - orvi
你能在这里解释一下吗?我不明白那里的内容。我只想让它成为一个可执行脚本,通过双击运行即可。 - pnkjmndhl
3
通过执行命令 sudo apt-get install dconf-tools 安装 dconf-editor - orvi
很好的回答+1,但我发现当它使用“launch”时,它在后台运行,所以你看不到正在发生什么。我想让它在终端中运行 - 所以如果你选择“ask”,那么它会要求你在终端中运行或者只是打开它 - 选择在终端中运行就像它所说的那样,我觉得这很有用:) - code_fodder
可执行文本激活在Debian bookworm上不是Nautilus选项。 - Cheetaiean

4

有没有一种方法可以配置Ubuntu来显示输出? - bjubes
将文件拖到终端窗口中,然后按回车键。 - majjam

2
一种供开发人员使用的替代方法是创建自包含的桌面启动器。其思想是使用一个包含脚本标签的启动器;启动器执行以下命令:
  1. 将脚本放入临时文件中
  2. 运行脚本并删除自身
当然,脚本应该删除自己,因此最好的做法是在脚本开头使用rm $0。注意,如果脚本需要读取自身,则需要在其他地方使用rm $0...
您可以使用以下示例,该示例源于我的项目
#!/usr/bin/env xdg-open
[Desktop Entry]
Name=Launch Assistance
Comment=A simple app to setup remote assistance
Exec=ttt=/tmp/$(date +"%s%N").sh; tail -n+$(awk '/^#__SCRIPT__#/ {print NR + 1; exit 0; }' %k) %k > $ttt ; sh $ttt;
Icon=computer
Terminal=true
Type=Application
Categories=Network;Internet;Utilities;Administration;Settings;

#__SCRIPT__#
rm "$0"
# Put here the script
# note that if the script needs to read $0, you will have to edit it

这是一个有趣的答案。我想值得一提的是,更直接的方法是创建一个脚本文件和一个.desktop文件,该文件在其Exec字段中引用该脚本。对我个人而言,这将是此页面上最好的答案。 - Jonathan Hartley
这将涉及两个文件,而问题实际上要求一个单一的文件。我提出的解决方案可以由开发人员设置,并且对于任何用户都可以直接使用,无需进行任何权限/设置更改。 - fortea
我认为惩罚使用“两个文件”的技术是不公平的。使用这种技术的创建者只编写一个文件。该技术的分发只发送一个文件。该技术的最终用户只与一个文件交互。它们都是同一个文件!事实上,在使用过程中创建临时文件似乎是一个非常无害的实现细节,对于大多数对此问题感兴趣的人,甚至可能是提问者来说。 - Jonathan Hartley

1

您需要将其变成可执行文件,可以使用 chmod +x <filename> 命令,或者进入文件属性并在那里设置。


它是可执行的(我已经做过了)。但是当我尝试打开它时,它会以编辑模式打开。 - pnkjmndhl
我正在使用Ubuntu 17.10,这些解决方案已经不再适用了。正如他们所说,它只会在选定的应用程序中打开,并且没有更改执行或终端应用程序的选项。有人有新的解决方案吗?谢谢。 - suze1992

1
  1. 打开nautilus
  2. 行为选项卡
  3. 可执行文本文件 -> 每次询问
  4. 完成

来源。在Ubuntu 20.04上测试。


是的,你说得对,只有Ubuntu不能通过终端自动运行,我不知道怎么做。在“打开方式”选项中也没有显示终端可供选择。 - tquang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接