无法通过双击文件来运行 shell 脚本(Ubuntu 21.10)

无法通过双击文件来运行 shell 脚本(Ubuntu 21.10)

以前在 Nautilus 中,这个问题是这样解决的: 如何在 Nautilus 中运行可执行脚本?

现在没有这样的部分并且 org.gnome.nautilus.executable-text-activation 也不起作用。

答案1

这个答案可能会让你失望,但这就是答案。多年以来,Nautilus 开发人员一直在弃用通过双击在任何地方运行可执行文件的选项。

其中一个论点是可执行文件必须经过管理。它们应该由知道它们做什么的用户运行。否则,如果要由系统的一般用户运行它们,它们应该被正确安装在常规位置。

开发人员将从终端测试其可执行文件。用户绝不会面临通过双击文件系统中某个文件来启动某些(潜在恶意)进程的风险。我认为这是一个重要的考虑因素,这就是为什么此选项被弃用,而现在随着 Files 40 的推出,它已被有效删除。

你应该这样做:

常规使用的可执行文件

  • 将 shell 脚本放在文件夹~/.local/share/bin或中~/bin。这两个文件夹中的任何一个都将自动包含在搜索 PATH 中 — 该变量会告诉系统在提示符下键入可执行文件的名称时在哪里查找可执行文件。
  • 通过在终端或运行对话框 ( Alt+ F2) 中输入其名称来执行您的 shell 脚本。
  • .desktop您可以选择通过在 中创建启动器将该脚本包含在应用程序概述中~/.local/share/applications

为那些知道自己在做什么的用户临时执行可执行文件

为了快速运行,请在当前目录中打开一个终端(文件管理器中的“在此处打开终端”),然后指定当前目录运行它,例如

./myscript

例如,高级用户在编译软件时总是这样做。他们进入包含配置脚本的目录,并按如下方式执行它:

./configure

答案2

有一个解决方法:

  1. 在 ~/.local/share/applications 中创建一个脚本,该脚本将运行通过命令行传递的参数:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import os
import sys
    
if __name__ == "__main__":
    for script in sys.argv[1:]:
        if os.access(script, os.X_OK):
            os.system(f"'{script}'")
  1. 在同一个目录中,为脚本创建一个 .desktop 文件:
[Desktop Entry]
Type=Application
Terminal=false
Name=Run script
Exec=/home/username/.local/share/applications/run_script.py %U
  1. 重新启动(就我而言这是必要的)并将“运行脚本”指定为.sh,.py 等的默认应用程序。

相关内容