Ссылка на переменные окружения * в * / etc / environment?

Недавно я обнаружил /etc/environment, который кажется более стандартным способом настройки простых переменных среды, чем сценарии, но мне было интересно, есть ли способ обратной ссылки на переменные среды в файле / etc / environment.

То есть, у меня есть это:

JAVA_HOME="/tools/java"
GRAILS_HOME="/tools/grails"
GROOVY_HOME="/tools/groovy"
GRADLE_HOME="/tools/gradle"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

Если я пытаюсь добавить $JAVA_HOME/bin к определению PATH, я получаю $ JAVA_HOME / bin, а не интерполированную переменную. Чтобы исправить это, я создаю environment.sh в profile.d, чтобы добавить записи /bin в путь, но это выглядит неаккуратно и неорганизованно.

Есть ли способ обратной ссылки на переменные окружения в / etc / environment?

19
задан 13 November 2011 в 20:38

2 ответа

Документация Ubuntu делает это невозможным. НО, есть ответ.

ОТВЕТ : Создание постоянных общесистемных переменных среды в /etc/.bashrc

JAVA_HOME="/tools/java"
...
PATH="$JAVA_HOME:$PATH"  

Подробности:
Вот еще некоторые подробности из документации переменных среды .
Официальная рекомендация - использовать /etc/environment, как вы уже пробовали. Проблема в том, что этот файл не является файлом сценария. Другими словами, вы не можете использовать переменные в объявлениях переменных.

Документация продолжается вместе с 2 другими файлами «Не рекомендуется»
/etc/profile и /etc/bash.bashrc.

/etc/profile «делает чуть больше, чем вызывает файл /etc/bash.bashrc». Поэтому вместо этого выберите

/etc/bash.bashrc, поскольку «Ubuntu по умолчанию настроен на выполнение этого файла каждый раз, когда пользователь входит в оболочку или среду рабочего стола».

0
ответ дан 13 November 2011 в 20:38

Файл /etc/environment считывается модулем PAM pam_env . Он поддерживает только простые пары ключ-значение без подстановок справа.

Если вы хотите построить значение с помощью подстановок или других расширений оболочки, вам нужно пройти через оболочку. /etc/profile (или файл в /etc/profile.d) - правильное место для них. Это традиционное место (/etc/environment - сравнительно недавнее новшество в истории Unix-систем), и в его использовании нет ничего небрежного. Основное преимущество /etc/environment состоит в том, что он позволяет устанавливать переменные окружения даже с помощью методов входа в систему, которые не используют оболочку, или для пользователей, которые используют оболочку, отличную от Bourne, но на практике это не распространено.

0
ответ дан 13 November 2011 в 20:38

Другие вопросы по тегам:

Похожие вопросы: