【问题标题】:How do I run a script on Linux just by double clicking it如何通过双击在 Linux 上运行脚本
【发布时间】:2017-06-22 00:54:38
【问题描述】:

我在一个文件上编写了一个脚本(基本上是 Ubuntu 终端的命令)。是的,代码以

开头
#!/bin/bash

如何通过双击运行此脚本?它可以使用终端运行,但我想让它更容易通过我的桌面访问。

我只是想在 Windows 上模仿 *.bat 文件。 Windows 上的 *.bat 文件包含一系列可在命令提示符下运行的脚本,只需双击即可执行。

【问题讨论】:

  • 您使用的是什么窗口管理器(例如 gnome、kde 等)?您是否在文件管理器窗口中单击名称?我假设您在桌面或文件浏览器中双击代表文件的图标,而不仅仅是在终端窗口中单击文件名(特别是因为您表示确实发生了某些事情)。
  • 假设您使用的是 GTK,请查看askubuntu.com/a/664272
  • 我投票结束这个问题,因为它是关于 Linux 的,所以应该在 unix.stackexchange.com 上询问
  • @rob 是的,您可以在此处关闭此问题。我会把它复制到 unix.stackexchange.com

标签: bash ubuntu terminal


【解决方案1】:

按照以下步骤操作:

  • 点击Alt+F2,输入dconf-editor,然后点击``Enter。

  • 在 dconfg-editor 中转到:org ➤ gnome ➤ nautilus ➤ preferences

  • 点击executable-text-activation并从下拉菜单中选择:

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

询问:通过对话询问要做什么。

关闭dconf-editor就是这样!

【讨论】:

  • Entering: dconf-editor 并按 Enter 没有任何作用。我正在使用 Linux Ubuntu16.04
  • 检查这个链接然后askubuntu.com/questions/605965/…
  • 你能在这里解释一下吗?我不明白那里有什么。我只是希望它是一个可执行脚本,只需双击它即可运行。
  • 安装dconf-editor 通过执行此命令sudo apt-get install dconf-tools
  • 不错的答案+1,但我发现当它使用“启动”时,它在后台运行,所以你看不到发生了什么。我希望它在终端中运行-因此,如果您选择“询问”,那么它会要求您在终端中运行或只是打开它-选择在终端中运行就像它所说的那样,我觉得这很有用:)
【解决方案2】:

来源https://askubuntu.com/a/286651/113065

编辑 -> 首选项 -> 行为 -> 可执行文本文件 = 运行 ...

它应该运行,但你看不到输出。

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 它是可执行的(我已经这样做了)。但是当我尝试打开它时,它会以编辑模式打开。
    • 我使用的是 Ubuntu 17.10,这些解决方案不再有效。正如他们所说,它只会在选定的应用程序中打开,并且没有选项可以将应用程序更改为执行或终端。有没有人有新的解决方案?谢谢。
    【解决方案4】:
    1. 打开鹦鹉螺
    2. 行为标签
    3. 可执行文本文件 -> 每次询问
    4. 利润

    Source。在 Ubuntu 20.04 上测试。

    【讨论】:

    • 是的,你是对的,只是 Ububtu 不能通过终端自动运行,我不知道该怎么做。在选项打开方式中也不显示终端来选择
    【解决方案5】:

    另一种方法(主要针对开发人员)是创建独立的桌面启动器。这个想法是使用一个启动器,其中包含一个标签,在该标签下有脚本;启动器执行以下命令:

    1. 将脚本放入临时文件
    2. 运行删除自身的脚本

    当然,脚本应该自行删除,因此,最好使用rm $0 启动脚本。请注意,如果脚本需要读取脚本本身,则需要在其他地方使用rm $0...

    您可以使用从my project窃取的以下示例:

    
    
    #!/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
    

    【讨论】:

      猜你喜欢
      • 2018-08-15
      • 2011-07-04
      • 2021-07-12
      • 2013-11-25
      • 1970-01-01
      • 2022-08-06
      • 2022-12-03
      • 2021-07-17
      • 1970-01-01
      相关资源
      最近更新 更多