返回

Cygwin 中 .sh 文件如何与 Bash 关联?

windows

在 Cygwin 中将 .sh 文件与 Bash 关联

前言

在 Cygwin 环境中,我们经常需要运行 .sh 脚本。默认情况下,这些脚本与 bash 没有任何关联,因此无法通过双击轻松执行。本指南将提供详细的分步说明,帮助你在 Cygwin 中将 .sh 文件与 bash 关联,以便只需双击即可运行它们。

步骤 1:安装 Bash Prompt Here

首先,我们需要安装 Bash Prompt Here 软件包。这是一个 Cygwin 软件包,用于管理 Windows 上下文菜单。Bash Prompt Here 将为我们提供在 Cygwin 中执行 .sh 脚本所需的链接。

步骤 2:配置 Bash Prompt Here

安装 Bash Prompt Here 后,我们需要配置其配置文件。配置文件通常位于 /etc/bash-prompt-here.conf。打开配置文件并添加以下行:

[Associations]
.sh=cygstart

此配置将 Bash Prompt Here 配置为将 .sh 文件与 cygstart 命令关联。

步骤 3:创建关联

接下来,我们需要创建将 .sh 文件与 bash 关联的 Windows 注册表项:

  1. 打开注册表编辑器 (regedit)。
  2. 导航到以下键:
HKEY_CLASSES_ROOT\.sh
  1. 右键单击 .sh 键,选择“新建”>“字符串值”。
  2. 将名称设置为 "(Standard)", 值设置为 "CygstartSh"。

此注册表项将指示 Windows 将 .sh 文件与 CygstartSh 命令关联。

步骤 4:自定义 CygstartSh

我们创建了注册表项后,需要进行一些自定义:

  1. 导航到以下键:
HKEY_CURRENT_USER\Software\Classes\CygstartSh\Shell\Open\Command
  1. 右键单击“默认”值,选择“修改”。
  2. 将值数据更改为:
"C:\cygwin64\bin\bash.exe" --login -i %1
  1. 在“目标”字段后添加以下参数:
-c "/cygdrive/c/scripts/long_rsync_command"

这些自定义将 bash 作为与 .sh 文件关联的命令,并指定在文件的包含目录中运行 long_rsync_command 脚本。

测试关联

完成所有步骤后,我们可以测试关联:

  1. 在 Cygwin 中创建一个名为 long_rsync_command.sh 的脚本,其中包含你要运行的 rsync 命令。
  2. 双击脚本文件。

脚本现在应该在 Cygwin 中运行,使用 long_rsync_command 命令。

结论

通过遵循这些步骤,你现在可以轻松地在 Cygwin 中将 .sh 文件与 bash 关联。这将使你可以双击 .sh 文件并在脚本包含的目录中执行它们,从而简化了在 Cygwin 环境中运行脚本的过程。

常见问题解答

  1. 为什么我的 .sh 脚本没有运行?

    • 确保你已完成所有步骤,包括配置 Bash Prompt Here、创建关联和自定义 CygstartSh 注册表项。
  2. 如何在其他目录中运行 .sh 脚本?

    • 在 CygstartSh 注册表项的自定义中,将路径更改为所需的目录。
  3. 我可以使用其他命令来关联 .sh 文件吗?

    • 是的,你可以使用任何其他命令,但需要修改 CygstartSh 注册表项的自定义。
  4. 为什么我在双击 .sh 文件后看到错误消息?

    • 检查脚本的语法和文件权限。确保脚本具有可执行权限。
  5. 如何撤销关联?

    • 删除注册表项 HKEY_CLASSES_ROOT.sh。这将断开 .sh 文件与任何命令的关联。