我想在Dockerfile中运行带有特殊参数(如$ _)的bash命令。 我试过下面的例子,但它似乎不工作。如果我直接在bash中执行相同的命令,它就像魅力一样。有谁知道我做错了什么?Dockerfile:使用特殊参数的运行命令
$ RUN mkdir /foo && cd $_ && pwd
我想在Dockerfile中运行带有特殊参数(如$ _)的bash命令。 我试过下面的例子,但它似乎不工作。如果我直接在bash中执行相同的命令,它就像魅力一样。有谁知道我做错了什么?Dockerfile:使用特殊参数的运行命令
$ RUN mkdir /foo && cd $_ && pwd
它取决于基本容器中的shell。 Ubuntu是使用例如仪表板,改变默认的shell来砸帮助得到结果是你所期望:
FROM ubuntu
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN mkdir /foo && cd $_ && pwd
结果:
docker build --rm .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM ubuntu
---> d0955f21bf24
Step 1 : RUN rm /bin/sh && ln -s /bin/bash /bin/sh
---> Using cache
---> c90ef9fd9710
Step 2 : RUN mkdir /foo && cd $_ && pwd
---> Running in 8e1d943a6b60
/foo
---> 1871918ee02c
Removing intermediate container 8e1d943a6b60
Successfully built 1871918ee02c
感谢您的回答。我不知道使用不同shell实现的debian像distros。替换syslink正在解决我的需求。你知道是否有$ _参数的Dash相当于? –
只有当它是交互式时,才会设置_变量,我不知道在非交互式破折号会话中使用$ _的方法。 – ISanych
你可以尝试用'运行的bash -c“的mkdir /富&& cd $ _ && pwd'' – VonC