环境变量在扩张中没有扩大 [英] Environment variable not expanding in openshift

查看:148
本文介绍了环境变量在扩张中没有扩大的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

看来,如果我使用如下命令:

It seems that if I use a command like:

rhc env set VARIABLE="$OPENSHIFT_DATA_DIR/file"

引用的目录变量永远不会展开,因此我无法将其用于我的应用程序。有没有办法解决这个问题?

the referenced directory variable is never expanded and as a result I can not use it for my app. Is there any way to fix this?

编辑

在他的答案中,timo.rieber,这不会工作,因为变量在本地解决,它没有价值。实际上:

As noted by @timo.rieber in his answer, this is not going to work because the variable is resolved locally, where it has no value. In fact:

$ rhc env set VARIABLE="$OPENSHIFT_DATA_DIR/file"
Setting environment variable(s) ... done
$ rhc env show VARIABLE
VARIABLE=/file

然而如果我使用单引号来避免立即展开:

However, if I use single quotes to avoid immediate expansion:

$ rhc env set VARIABLE='$OPENSHIFT_DATA_DIR/file'
Setting environment variable(s) ... done
$ rhc env show VARIABLE
VARIABLE=$OPENSHIFT_DATA_DIR/file

有趣的是,这并不奏效(即使用该过程也不会发生扩展),即使显然这次正确设置。

Interestingly, this does not work as well (i.e. no expansion happens when it is used by the process) even if apparently this time it is correctly set.

推荐答案

问题解释:

$ OPENSHIFT_DATA_DIR 在本地计算机上解决。很可能是空的,因为您的计算机上未设置此变量。

The value of $OPENSHIFT_DATA_DIR gets resolved on your local computer. Most likely it will be empty as this variable is not set on your machine.

不可能读取内置服务器端环境变量的值,如 $ OPENSHIFT_DATA_DIR 。只有外部设置的变量才会被暴露。您可以通过以下示例尝试:

It is not possible to read values of builtin server-side environment variables like $OPENSHIFT_DATA_DIR. Only externally set variables will be exposed. You can try this by the following example:

user@machine:~$ rhc env list

user@machine:~$ rhc env set VARIABLE="file"
Setting environment variable(s) ... done

user@machine:~$ rhc env list
VARIABLE=file

user@machine:~$ rhc env unset VARIABLE
Removing environment variables is a destructive operation that may result in loss of data.
VARIABLE

Are you sure you wish to remove the environment variable(s) above from application 'yourapp'?(yes|no):yes

Removing environment variable(s) ... done

user@machine:~$ rhc env list

解决方案:

设置两个环境变量,并在程序代码中使用它们来构建路径:

Set two environment variables and use them within your program code to build your path:

1。定义第一个环境变量来定义要读取的内置环境变量

user@machine:~$ rhc env set MY_ENV_VAR_FOR_BASE_DIR="OPENSHIFT_DATA_DIR"
Setting environment variable(s) ... done

2。定义第二个环境变量来指定给定目录中的文件夹

user@machine:~$ rhc env set MY_TARGET_FOLDER="file"
Setting environment variable(s) ... done

3。您的代码(python示例)构建您的路径

(InteractiveConsole)
>>> import os

>>> os.environ.get("MY_ENV_VAR_FOR_BASE_DIR")
'OPENSHIFT_DATA_DIR'

>>> os.environ.get("OPENSHIFT_DATA_DIR")
'/var/lib/openshift/your_user_dir/app-root/data/'

>>> os.environ.get("MY_TARGET_FOLDER")
'file'

>>> os.path.join(os.environ.get(os.environ.get("MY_ENV_VAR_FOR_BASE_DIR")), os.environ.get("MY_TARGET_FOLDER"))
'/var/lib/openshift/your_user_dir/app-root/data/file'

这篇关于环境变量在扩张中没有扩大的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆