Windows下Git Bash访问容器为何需使用//路径?
问题原因
Git Bash在Windows环境下运行时,会自动把单个斜杠开头的Unix风格路径转换为Windows本地的绝对路径。你输入的/tmp被Git Bash解析成了Windows系统的临时目录C:/Users/xxx/AppData/Local/Temp,这个路径被传递给Pod内的ls命令后,因为Pod里不存在这个Windows路径,所以报错。
而使用//tmp时,Git Bash不会触发这种路径转换逻辑,会直接把路径原封不动传给Pod内的命令,因此能正常执行。
解决/避免方法
- 使用双斜杠开头的路径:直接写
//tmp替代/tmp,比如执行kubectl -n bow exec $POD -- ls //tmp - 用单引号包裹路径:把路径放在单引号里,阻止Git Bash解析,比如
kubectl -n bow exec $POD -- ls '/tmp' - 禁用Git Bash的路径转换:
- 临时禁用:在命令前添加环境变量,比如
MSYS_NO_PATHCONV=1 kubectl -n bow exec $POD -- ls /tmp - 永久禁用:编辑Git Bash的配置文件
~/.bashrc,添加一行export MSYS_NO_PATHCONV=1,保存后执行source ~/.bashrc生效,之后所有命令都不会自动转换路径
- 临时禁用:在命令前添加环境变量,比如
内容的提问来源于stack exchange,提问作者Bo Wang
相关产品推荐
相关产品推荐

