Динамические переменные среды в Linux? - PullRequest
2 голосов
/ 29 февраля 2012

Возможно ли каким-либо образом иметь динамические переменные окружения в Linux?

У меня есть веб-сервер, на котором сайты следуют этому макету:

site/
    qa/
    production/

Я хотел бы иметь переменную среды (например, APPLICATION_ENV), для которой задано значение "qa", когда я нахожусь в каталоге qa, и значение "production", когда я нахожусь в рабочем каталоге. Причина этого заключается в том, что различные сайты могут использовать множество разных процессов, которые все должны знать, является ли это QA или производственной средой. Некоторые сайты используют PHP под Apache, некоторые используют Node.js, некоторые сайты поставляются с инструментами командной строки, cron-заданиями и так далее. Я хотел бы иметь один авторский источник о том, является ли это QA или производственной средой.

Ответы [ 2 ]

7 голосов
/ 29 февраля 2012

Основано на переопределении 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 или один из их подкаталогов.

1 голос
/ 29 февраля 2012

Вы можете создать исполняемый скрипт в одном из каталогов /bin или /usr/bin и выполнить его из скриптов сайта. Я не понимаю, почему вам нужно взломать cd.

/ USR / бен / который версия:

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

Веб-сайт:

$env = system("which-version")

...