Windows Bash执行路径的git脚本不正确



代码

SRC=$(cd $(dirname "$0"); pwd)

是在包含c:program filesGit中安装Windows的系统上的BASH脚本中执行的,SRC将获得值/c/program

我如何完成这项工作?我需要获取通往脚本所在位置的路径,并使用它来包括具有相对路径的其他脚本。在我的情况下,下一行是:源" $ {src}/common/common.sh"

脚本在c:program filesGitusrbin中,因此我可以使用git <command-name>并使用一些有用的手工制作命令扩展GIT,用于具有rebase和subsodules的功能分支工作流程。
源代码在https://github.com/jlovs/git-scripts上,如果有人想提供帮助。

您需要双引号cd命令。

SRC=$(cd "$(dirname "$0")"; pwd)

命令替换$(dirname "$0")扩展到包含空间的路径。以下cd命令在您只想传递一个时会获得两个参数,其中有一个空间。

您不必担心另一对引号中$0周围的引号,因为$()命令替换开始了新的引号。

如您所述,您正在Mingw64下运行。您可以尝试使用cygpath -aw将路径转换为Windows格式:

SRC=$(cygpath -aw $(cd "$(dirname "$0")"; pwd))

更多信息在这里和这里。

最新更新