bura Asked: 2021-11-05 02:19:16 +0800 CST2021-11-05 02:19:16 +0800 CST 2021-11-05 02:19:16 +0800 CST 无法通过双击文件运行 shell 脚本(Ubuntu 21.10) 772 以前在 Nautilus 中,问题是这样解决的: 如何在 Nautilus 中运行可执行脚本? 现在没有这样的部分并且 org.gnome.nautilus.executable-text-activation 也不起作用。 files 2 个回答 Voted Best Answer vanadium 2021-11-05T02:52:53+08:002021-11-05T02:52:53+08:00 这个答案可能会让你失望,但就是这样。多年来,Nautilus 开发人员不赞成通过双击来在所有地方运行可执行文件的选项。 其中一个论点是必须对可执行文件进行管理。它们应该由知道自己做什么的用户运行。否则,如果要由系统的一般用户运行,则应将它们正确安装在常规位置。 开发人员将从终端测试他的可执行文件。用户永远不应该面临通过双击文件系统中某处的文件来启动某些潜在恶意进程的风险。我认为这是一个重要的考虑因素,为什么不推荐使用此选项,现在使用 Files 40,已被有效删除。 这就是你应该这样做的方式: 常规使用的可执行文件 将您的 shell 脚本放在一个文件夹~/.local/share/bin或~/bin. 这两个文件夹中的任何一个都将自动包含在您的搜索路径中——当您在提示符下键入可执行文件的名称时,该变量会告诉系统在哪里查找可执行文件。 通过在终端或“运行”对话框 ( Alt+ F2) 中键入其名称来执行您的 shellscript。 通过.desktop在~/.local/share/applications. 为那些知道自己做什么的用户临时执行可执行文件 为了快速运行,请在当前目录中打开一个终端(文件管理器中的“在此处打开终端”),然后指定当前目录运行它,例如 ./myscript 例如,编译软件的高级用户一直都在这样做。他们进入包含配置脚本的目录,并执行如下: ./configure AlexNK 2022-02-10T05:00:09+08:002022-02-10T05:00:09+08:00 有一个解决方法: 在 ~/.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}'") 在同一个目录中,为脚本创建一个 .desktop 文件: [Desktop Entry] Type=Application Terminal=false Name=Run script Exec=/home/username/.local/share/applications/run_script.py %U 重新启动(在我的情况下是必要的)并将“运行脚本”分配为 .sh、.py 等的默认应用程序。
这个答案可能会让你失望,但就是这样。多年来,Nautilus 开发人员不赞成通过双击来在所有地方运行可执行文件的选项。
其中一个论点是必须对可执行文件进行管理。它们应该由知道自己做什么的用户运行。否则,如果要由系统的一般用户运行,则应将它们正确安装在常规位置。
开发人员将从终端测试他的可执行文件。用户永远不应该面临通过双击文件系统中某处的文件来启动某些潜在恶意进程的风险。我认为这是一个重要的考虑因素,为什么不推荐使用此选项,现在使用 Files 40,已被有效删除。
这就是你应该这样做的方式:
常规使用的可执行文件
~/.local/share/bin
或~/bin
. 这两个文件夹中的任何一个都将自动包含在您的搜索路径中——当您在提示符下键入可执行文件的名称时,该变量会告诉系统在哪里查找可执行文件。.desktop
在~/.local/share/applications
.为那些知道自己做什么的用户临时执行可执行文件
为了快速运行,请在当前目录中打开一个终端(文件管理器中的“在此处打开终端”),然后指定当前目录运行它,例如
例如,编译软件的高级用户一直都在这样做。他们进入包含配置脚本的目录,并执行如下:
有一个解决方法: