AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1545122
Accepted
aguiadouro
aguiadouro
Asked: 2025-04-04 21:13:58 +0800 CST2025-04-04 21:13:58 +0800 CST 2025-04-04 21:13:58 +0800 CST

为什么双击我的 .sh 脚本会在 Vim 中打开它而不是执行它,即使在 chmod +x 之后也是如此?

  • 772

我在 Ubuntu 24.04.0 LTS 上创建了一个简单的 shell 脚本,并使其可执行:

chmod +x myscript.sh

该脚本具有正确的shebang(#!/bin/bash),并且在从终端(./myscript.sh)执行时运行良好。但是,当我双击该文件时,它没有执行,而是使用Vim打开一个终端并显示脚本的内容。

我该如何解决这个问题?我想双击运行脚本。

我的脚本内容:

#!/bin/bash
dart /home/rsj/Documents/01_ProfEPT/ProfEPT-disciplinas-eletivas/abreVSCODE.dart
scripts
  • 2 2 个回答
  • 148 Views

2 个回答

  • Voted
  1. Best Answer
    vanadium
    2025-04-04T22:33:06+08:002025-04-04T22:33:06+08:00

    双击.sh脚本会在 Vim 中打开它而不是执行它,是因为该脚本是一个文本文件。在文件管理器中双击它会在指定用于打开文本文件的应用程序中打开该文件。

    出于安全考虑,Ubuntu 桌面和 Gnome Shell 已弃用仅通过双击文件即可运行可执行文件的功能。可执行文件必须先以某种方式“安装”。以下是几种可能性。

    • 将可执行文件安装在您的 PATH 目录中,例如~/.local/bin。然后,您可以在终端或“运行命令”对话框(Alt+F2)中输入脚本名称来运行该脚本。

    • 您还可以安装.desktop启动器。然后,可以从应用程序概览中的图标运行该脚本。

    • 您可以将脚本安装为 nautilus 脚本。然后,它可以从目录或文件的右键菜单中启动,并将选定的文件或目录作为参数。

    您仍然可以配置系统在双击后运行具有特定文件扩展名的脚本。

    1. 创建一个.desktop启动器来打开你的终端并运行它的参数,即你的脚本的完整路径(下面的终端示例ptyxis):
    [Desktop Entry]
    Name=Run a script
    Exec=ptyxis -- %U
    Type=Application
    
    1. 将 eg.sh文件与该启动器关联
    • 在文件中,右键单击带有.sh扩展名的脚本。
    • 选择“打开方式”
    • 选择与您创建的启动器对应的条目.desktop,在本例中为“运行脚本”。(如果该条目未出现,请注销后重新登录重试)。
    • 在单击“打开”之前,请确保选中“始终用于此文件类型”。

    从那时起,双击任何可执行.sh文件都会打开一个终端窗口,命令将自动在其中运行。

    • 3
  2. Naveed Ahmed
    2025-04-04T21:36:41+08:002025-04-04T21:36:41+08:00

    正如这里所解释的

    默认情况下,*.sh 文件会在文本编辑器(Vim 或 TextEdit)中打开。要创建在终端中打开后执行的 Shell 脚本,请将其命名为“command”扩展名,例如 file.command。默认情况下,这些脚本会发送到终端,终端会将该文件作为 Shell 脚本执行。

    您还需要确保该文件是可执行的,例如:

    chmod +x file.command
    

    如果没有这个,终端将拒绝执行它。

    • 0

相关问题

  • 如何在 Nautilus 中管理保存的完整网页及其目录(例如 n.html 和 n_files)

  • 如何每 5 秒运行一次脚本?

  • 如何将必须从其自己的目录中运行的程序添加到面板或主菜单?

  • 如何编写 shell 脚本来安装应用程序列表?

  • Mac OS X Automator 的替代品?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve