我在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命令提示符),则.shWindows使用该扩展来确定如何执行它,并且您可以调用它,rd就像(a)它在目录中一样在您的%PATH%,和(b)Windows配置(在文件夹选项和/或通过设置%PATHEXT%)使用sh或bash启动.sh文件.
如果您希望能够从任一环境运行相同的脚本,则可以创建一个符号链接,该链接将在模拟的类Unix环境中被识别.例如,如果rd.sh是$HOME/bin,则:
ln -s $HOME/bin/rd.sh $HOME/bin/rd
Run Code Online (Sandbox Code Playgroud)
将创建适当的符号链接.(您可以制作rd副本rd.sh,但是对其中一个的更改将不适用于另一个.)
如果你只需要从bash运行它,只需调用它rd而不是rd.sh; 正如我所提到的,就bash而言,.sh扩展只是名称的一部分,并没有特别的意义.告诉bash如何执行脚本是#!行,而不是.sh扩展.
(严格来说,它不是处理它的bash #!.在实际的Unix或Linux系统上,它由内核处理;我不确定msysgit下的确切机制是什么.)