【问题标题】:Dynamic environment variables in Linux?Linux中的动态环境变量?
【发布时间】:2012-02-29 10:20:08
【问题描述】:

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

我有一个网站遵循此布局的网络服务器:

site/
    qa/
    production/

我想要一个环境变量(例如 APPLICATION_ENV),当我在 qa 目录中时设置为“qa”,当我在生产目录中时设置为“production”。原因是不同的站点可以使用许多不同的流程,所有这些流程都需要知道它是 QA 还是生产环境。有些站点在 Apache 下使用 PHP,有些使用 Node.js,有些站点带有命令行工具、cron 作业等。我希望有一个权威来源,说明它是 QA 还是生产环境。

【问题讨论】:

  • 这是一个shell脚本吗?你可以使用$(basename $(pwd))
  • 不仅仅适用于 shell 脚本。如果只是这样就很容易:-) 有许多站点,具有许多不同的进程、脚本等。这就是为什么我想要一个应用程序环境的权威来源(如果可能的话,我更愿意坚持使用环境变量,因为所有 Linux 进程都理解环境变量)

标签: linux bash environment-variables environment


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 谢谢,这听起来很有用。我试试看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2015-09-16
    相关资源
    最近更新 更多