脚本的Git for windows bash执行路径不正确
当代码脚本的Git for windows bash执行路径不正确,git,bash,git-bash,git-for-windows,Git,Bash,Git Bash,Git For Windows,当代码 SRC=$(cd $(dirname "$0"); pwd) 在安装了Git for Windows的系统上的Bash脚本内执行,该系统安装在c:\program files\Git中,SRC将获得值/c/program 我该怎么做? 我需要获取脚本所在的路径,并使用该路径包含具有相对路径的其他脚本。 就我而言,下一行是: 来源“${SRC}/common/common.sh” 脚本位于c:\program files\Git\usr\bin中,因此我可以使用Git并使用一些有用的手工
SRC=$(cd $(dirname "$0"); pwd)
在安装了Git for Windows的系统上的Bash脚本内执行,该系统安装在c:\program files\Git
中,SRC将获得值/c/program
我该怎么做?
我需要获取脚本所在的路径,并使用该路径包含具有相对路径的其他脚本。
就我而言,下一行是:
来源“${SRC}/common/common.sh”
脚本位于c:\program files\Git\usr\bin
中,因此我可以使用Git
并使用一些有用的手工命令扩展Git,以用于功能分支工作流以及rebase和子模块。如果有人需要帮助,源代码位于。您需要双引号引用
cd
命令的参数
SRC=$(cd "$(dirname "$0")"; pwd)
命令替换$(dirname“$0”)
扩展为包含空格的路径。下面的cd
命令获取两个参数,而您只想传递一个参数,其中包含一个空格
您不必担心另一对引号中
$0
的引号,因为$()
命令替换会启动一个新的引用。如您所述,您正在MINGW64下运行。您可以尝试使用cygpath-aw
将路径转换为windows格式:
SRC=$(cygpath -aw $(cd "$(dirname "$0")"; pwd))
更多信息和。请分享更多关于环境的信息:你在Cygwin下运行吗?我在运行MINGW64@JanLovstrand–你所问的可能有一些模棱两可之处。读了第二遍之后,我真的没有任何线索。你到底想要什么?等等,我想我明白了。您需要解析src目录:
src=$(cd“$”(dirname“${BASH_SOURCE[0]}”)&&pwd)
@JanLovstrand–如果这是错误的,请澄清问题。这个答案完全有效,但对于那些喜欢双引号的人(我假设所有Windows用户都需要这样):src=“$(cd“$(dirname“$0”);“pwd”)”
这一款有效。抱歉,如果我没有注意到它是一个包含的脚本,有相同的错误。谢谢大家!!你不应该逃避内部引用吗SRC=$(cd“$(dirname\“$0\”);pwd)
@phd否,请参阅我更新答案的最后一段。请认为问题出在行的$(dirname“$0”)部分,因为这会给我一个“参数太多”错误。我认为路径中的空间必须像/c/Program\Files/Git/usr/bin那样转义,但我不知道如何做到这一点。尝试了cygpath-u,但它给了我/c/Program Files/usr/binTry cygpath-aw请验证空格、引号等