Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Dockerfile中的bash中定义一行中的几个变量?_Bash_Docker - Fatal编程技术网

如何在Dockerfile中的bash中定义一行中的几个变量?

如何在Dockerfile中的bash中定义一行中的几个变量?,bash,docker,Bash,Docker,在我的Dockerfile中,我使用如下结构逐个设置环境变量: RUN export PATH="/root/.rbenv/shims:$PATH" RUN export RUBY_PATH="/root/.rbenv/shims/ruby" 有没有办法把它合并成一行,比如 RUN export PATH="/root/.rbenv/shims:$PATH" && export RUBY_PATH="/root/.rbenv/shims/ruby" ?运行导出是不可操作的;每

在我的Dockerfile中,我使用如下结构逐个设置环境变量:

RUN export PATH="/root/.rbenv/shims:$PATH"
RUN export RUBY_PATH="/root/.rbenv/shims/ruby"
有没有办法把它合并成一行,比如

RUN export PATH="/root/.rbenv/shims:$PATH" && export RUBY_PATH="/root/.rbenv/shims/ruby"

运行导出
是不可操作的;每个
RUN
命令都会启动一个新的shell,并且环境变量不会被持久化。为此,您需要
ENV
。更好的方法是将东西直接安装到“正常”系统路径中,比如让解释器成为
/usr/bin/ruby
;因为一个映像通常只打包一个应用程序,所以您不需要像rbenv这样的工具来管理多个版本的解释器。在Dockerfile中,您根本无法在bash中定义变量,至少这些变量在定义它们的单次运行命令之后仍然没有任何意义。同意Devid,导出在docker中根本不会持久化ENV,您必须使用ENV。下面是ENV的语法
ENV PATH=“/root/.rbenv/shimmes:$PATH”RUBY_PATH=“/root/.rbenv/shimmes/RUBY”
运行导出是不可操作的;每个
RUN
命令都会启动一个新的shell,并且环境变量不会被持久化。为此,您需要
ENV
。更好的方法是将东西直接安装到“正常”系统路径中,比如让解释器成为
/usr/bin/ruby
;因为一个映像通常只打包一个应用程序,所以您不需要像rbenv这样的工具来管理多个版本的解释器。在Dockerfile中,您根本无法在bash中定义变量,至少这些变量在定义它们的单次运行命令之后仍然没有任何意义。同意Devid,导出在docker中根本不会持久化ENV,您必须使用ENV。下面是ENV的语法
ENV PATH=“/root/.rbenv/shimmes:$PATH”RUBY_PATH=“/root/.rbenv/shimmes/RUBY”