在msysgit中使用/添加shell脚本



我在Windows上使用msysgit,并编写了一个我想使用的简单shell脚本。我将.sh文件所在的文件夹添加到了Windows计算机的PATH变量中,但当我想使用脚本时,我必须键入rd.sh,而不仅仅是普通的rd.

如何通过只引用它的名称rd而不是带有.sh文件扩展名(rd.sh)的完整文件名来使用它?

msysgit提供的shell是bash,它在类似Unix的模拟环境中运行。

如果从bash shell运行脚本,则需要键入脚本的名称,就类Unix环境而言,该名称为rd.sh.sh在Unix环境中没有特别的意义;它只是文件名的最后三个字符。脚本的第一行应该是#!/bin/sh#!/bin/bash;这被称为"shebang"。

另一方面,如果要从Windows(例如,从cmd.exe命令提示符)运行它,则Windows将使用.sh扩展来确定如何执行它,并且如果(a)它在%PATH%中的目录中,并且(b)Windows已配置(在"文件夹选项"和/或通过设置%PATHEXT%)使用shbash来启动.sh文件,则可以将它调用为rd

如果您希望能够在任何一个环境中运行相同的脚本,您可以创建一个符号链接,该链接将在模拟的类Unix环境中被识别。例如,如果rd.sh$HOME/bin中,则此:

ln -s $HOME/bin/rd.sh $HOME/bin/rd

将创建适当的符号链接。(您可以将rd设为rd.sh的副本,但对其中一个的更改将不适用于另一个。)

如果您只需要从bash运行它,只需将其称为rd而不是rd.sh;正如我所提到的,就bash而言,.sh扩展只是名称的一部分,没有特别的意义。告诉bash如何执行脚本的是#!行,而不是.sh扩展。

(严格来说,不是bash处理#!。在实际的Unix或Linux系统上,它是由内核处理的;我不确定msysgit下的确切机制是什么。)

通常情况下,您可以将扩展.sh添加到PATHEXT环境变量中。PATHEXT是一个以分号分隔的扩展列表,将其视为可执行文件。

然而,由于windows没有内置对shell脚本的支持(显然除了批处理文件等),我不能100%确定这是否可行。

最新更新