Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux中的动态环境变量?_Linux_Bash_Environment Variables_Environment - Fatal编程技术网

Linux中的动态环境变量?

Linux中的动态环境变量?,linux,bash,environment-variables,environment,Linux,Bash,Environment Variables,Environment,在Linux中是否可能以某种方式拥有动态环境变量 我有一个Web服务器,其中站点遵循以下布局: site/ qa/ production/ 我希望有一个环境变量(例如APPLICATION_ENV),当我在qa目录中时,它被设置为“qa”,当我在production目录中时,它被设置为“production”。原因是不同的站点可以使用许多不同的流程,所有这些流程都需要知道是QA还是生产环境。有些站点在Apache下使用PHP,有些使用Node.js,有些站点附带命令行工具、cr

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

我有一个Web服务器,其中站点遵循以下布局:

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

基于的覆盖:

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(“哪个版本”)

这是用于shell脚本的吗?您可以只使用
$(basename$(pwd))
而不仅仅用于shell脚本。如果只是这样的话,那就很容易了:-)有很多网站,有很多不同的流程、脚本等等。这就是为什么我想要一个应用程序环境的授权源(如果可能的话,我更喜欢使用环境变量,因为所有Linux进程都理解环境变量)谢谢,这听起来很有用。我试试看。