Linux中的动态环境变量



在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放入qaproduction或它们的一个子目录中。

您可以在/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")

最新更新