You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bitbucket Pipelines脚本cd命令报错:目录不存在问题排查

Bitbucket CI/CD流水线cd命令失败排查:目录存在却提示不存在

问题场景

我在基于Bitbucket搭建CI/CD流水线时遇到一个诡异问题:明明目录存在,但执行cd命令切换目录时,系统提示目录不存在。

流水线配置片段:

pipelines:
  branches:
    master:
      - step:
          name: update gitops image tag
          script:
            - git clone https://x-token-auth:$TOKEN@bitbucket.org/myuser/myrepo-gitops.git
            - VERSION="prod-0.1.${BITBUCKET_BUILD_NUMBER}"
            - sed -i "s/\([ ]*image:[ ]*mydockerregistry.com\/myapp-ui:\)\(.*\)/\1"${VERSION}"/" myrepo-gitops/myapp_ui/docker-compose.yml
            - cat myrepo-gitops/myapp_ui/docker-compose.yml
            - ls -d */
            - cd ./myrepo–gitops/myapp_ui
            ...

流水线执行日志:

+ ls -d */
android/
myrepo-gitops/
ios/
public/
src/
tests/
bash: cd: ./myrepo–gitops/myapp_ui: No such file or directory
cd ./myrepo–gitops/myapp_ui

核心原因

仔细对比目录名的字符:

  • git clone命令拉取的目录是myrepo-gitops(使用的是普通减号-,ASCII码0x2D)
  • 但cd命令里写的是myrepo–gitops(使用的是长破折号–,ASCII码0x2013)

这两个字符视觉上几乎一样,但系统会识别成完全不同的字符串,自然找不到对应的目录。这种情况通常是复制粘贴时不小心带入了特殊字符,或者输入法切换时误输入了长破折号导致的。

解决方法

把cd命令里的长破折号替换成普通减号,修改后的命令如下:

cd ./myrepo-gitops/myapp_ui

或者直接从ls输出的目录名里复制粘贴,避免手动输入出错。

内容的提问来源于stack exchange,提问作者aleklass

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 00:21:16