如何让Bash会话继承启动它的PowerShell会话的当前工作目录?
解决PowerShell启动MSYS2 Bash时切换到当前工作目录的问题
你需要在Bash的登录会话命令串里,先切换到转换后的PowerShell当前目录,再执行脚本。正确的命令格式如下:
C:\msys64\usr\bin\bash -lc "cd `$(cygpath -u '$PWD') && ./super_duper_script.sh"
关键说明:
- 使用**
$()**做命令替换(这是Bash的标准语法,你之前用的()或{}写法不符合Bash规则),把cygpath -u '$PWD'的输出作为cd的目标路径。 - 用**
&&**连接cd和脚本执行命令,确保只有切换目录成功后才运行脚本。 - PowerShell里需要用反引号
`转义Bash命令里的$,避免PowerShell提前解析$(...)结构。
之前尝试失败的原因:
env --chdir=(cygpath -u '$PWD'):()这种子命令替换是Zsh专属语法,Bash不支持,且命令未包含后续的脚本执行逻辑。cd {cygpath -u '$PWD'}:{}在Bash中是代码块标记,不是命令替换语法,无法正确解析路径内容。
这种命令行内的动态路径切换方式,完全适配CI环境中不同目录调用脚本的需求,无需修改.bashrc或其他全局配置文件。
内容的提问来源于stack exchange,提问作者Olumide
相关产品推荐
相关产品推荐

