我在 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
双击
.sh
脚本会在 Vim 中打开它而不是执行它,是因为该脚本是一个文本文件。在文件管理器中双击它会在指定用于打开文本文件的应用程序中打开该文件。出于安全考虑,Ubuntu 桌面和 Gnome Shell 已弃用仅通过双击文件即可运行可执行文件的功能。可执行文件必须先以某种方式“安装”。以下是几种可能性。
将可执行文件安装在您的 PATH 目录中,例如
~/.local/bin
。然后,您可以在终端或“运行命令”对话框(Alt+F2)中输入脚本名称来运行该脚本。您还可以安装
.desktop
启动器。然后,可以从应用程序概览中的图标运行该脚本。您可以将脚本安装为 nautilus 脚本。然后,它可以从目录或文件的右键菜单中启动,并将选定的文件或目录作为参数。
您仍然可以配置系统在双击后运行具有特定文件扩展名的脚本。
.desktop
启动器来打开你的终端并运行它的参数,即你的脚本的完整路径(下面的终端示例ptyxis
):.sh
文件与该启动器关联.sh
扩展名的脚本。.desktop
,在本例中为“运行脚本”。(如果该条目未出现,请注销后重新登录重试)。从那时起,双击任何可执行
.sh
文件都会打开一个终端窗口,命令将自动在其中运行。正如这里所解释的
默认情况下,*.sh 文件会在文本编辑器(Vim 或 TextEdit)中打开。要创建在终端中打开后执行的 Shell 脚本,请将其命名为“command”扩展名,例如 file.command。默认情况下,这些脚本会发送到终端,终端会将该文件作为 Shell 脚本执行。
您还需要确保该文件是可执行的,例如:
如果没有这个,终端将拒绝执行它。