在Linux中以某种方式拥有动态环境变量可能吗?
我有一个网站遵循以下布局的Web服务器:
site/
qa/
production/
我希望有一个环境变量(例如APPLICATION_ENV),当我在qa目录中时设置为"qa",而当我在production目录中时则设置为"production"。原因是不同的站点可以使用许多不同的流程,所有这些流程都需要知道是QA还是生产环境。有些网站使用Apache下的PHP,有些网站使用Node.js,有些网站附带命令行工具、cron作业等。我想有一个关于它是QA还是生产环境的权威来源。
基于rvm
的覆盖:
cd () {
if builtin cd "$@"
then
if [[ "$PWD" =~ /(qa|production)(/|$) ]]
then
export APPLICATION_ENV="${BASH_REMATCH[1]}"
else
unset APPLICATION_ENV
fi
return 0
else
return $?
fi
}
只需将此函数放入.bashrc
或其他来源的环境文件中,并尝试将cd
放入qa
、production
或它们的一个子目录中。
您可以在/bin
或/usr/bin
目录中的一个目录中创建可执行脚本,并从站点脚本中执行。我不明白你为什么需要破解cd
。
/usr/bin/哪个版本:
#!/bin/bash
if [[ "$PWD" =~ /(qa|production)(/|$) ]]
then
echo "${BASH_REMATCH[1]}"
else
echo "unknown"
fi
网站:
$env = system("which-version")