【问题标题】:Change shell to git bash.exe in windows docker container在 windows docker 容器中将 shell 更改为 git bash.exe
【发布时间】:2021-04-23 06:06:08
【问题描述】:

我想从 git-for-windows 将 shell 改成bash.exe

我有 docker 文件:

FROM mcr.microsoft.com/windows/servercore:1809

# $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

RUN iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
RUN choco install -y git

RUN & 'C:/Program Files/Git/bin/sh.exe' -c "ls -al"  #### << Passes
SHELL ["\"C:\\Program Files\\Git\\bash.exe\"", "-c"] #### << Passes
RUN ls -al                                           #### << Crashes

第三条语句的结果: /usr/bin/bash: Files/Git/bin/sh.exe: No such file or directory

当我尝试像下面这样引用时

SHELL ["\"C:\\Program Files\\Git\\bash.exe\"", "-c"]
RUN ls -al

构建工作,但我没有看到来自ls -al 的任何输出,我不知道它是否真的工作?

如何才能成功使用bash.exe?我正在通过 WSL2 引擎使用 docker for windows。

【问题讨论】:

    标签: windows bash git docker shell


    【解决方案1】:

    我在使用基本映像 mcr.microsoft.com/windows:2004 时遇到了类似的问题。 我对 windows 命令提示符或 powershell 不是很熟悉。

    使用 Chocolatey 安装 git 后,更新系统 PATH 环境变量。我为此使用了 cmd ,因为这是我在堆栈溢出中发现的第一种方法,并且它已经奏效了。 我没有使用包含空格的路径测试运行命令,因此下面的命令可能不适用于您。

    SHELL ["cmd", "/S", "/C"]
    
    RUN setx path "C:\\Program Files\\Git\\bin;%path%"
    

    更新系统路径环境变量后,bash.exe 可在命令行中使用。

    SHELL ["bash.exe", "-c"]
    
    RUN "ls -la"
    
    ENTRYPOINT ["bash.exe"]
    

    【讨论】:

      猜你喜欢
      • 2019-12-28
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      • 2016-05-04
      • 2019-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多