Linux中的动态环境变量?

时间:2012-02-29 10:20:08

标签: linux bash environment-variables environment

是否有可能以某种方式在Linux中拥有动态环境变量?

我有一个网站服务器,网站遵循这种布局:

site/
    qa/
    production/

我想要一个环境变量(例如APPLICATION_ENV)设置为" qa"当我在qa目录中,以及"生产"当我在生产目录中时。这样做的原因是各个站点可以使用许多不同的流程,如果它们是QA或生产环境,则需要知道这些流程。有些站点在Apache下使用PHP,有些站点使用Node.js,有些站点使用命令行工具,cron作业等等。我想有一个关于它是QA还是生产环境的授权来源。

2 个答案:

答案 0 :(得分:7)

基于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或其子目录。

答案 1 :(得分:1)

您可以在/bin/usr/bin目录之一中创建可执行脚本,并从站点脚本执行该脚本。我不明白为什么你需要破解cd

的/ usr /斌/哪个版本:

#!/bin/bash
if [[ "$PWD" =~ /(qa|production)(/|$) ]]
then
  echo "${BASH_REMATCH[1]}"
else
  echo "unknown"
fi

的网站:

$env = system("which-version")