Недавно я обнаружил /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?
Документация 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 по умолчанию настроен на выполнение этого файла каждый раз, когда пользователь входит в оболочку или среду рабочего стола».
Файл /etc/environment
считывается модулем PAM pam_env
. Он поддерживает только простые пары ключ-значение без подстановок справа.
Если вы хотите построить значение с помощью подстановок или других расширений оболочки, вам нужно пройти через оболочку. /etc/profile
(или файл в /etc/profile.d
) - правильное место для них. Это традиционное место (/etc/environment
- сравнительно недавнее новшество в истории Unix-систем), и в его использовании нет ничего небрежного. Основное преимущество /etc/environment
состоит в том, что он позволяет устанавливать переменные окружения даже с помощью методов входа в систему, которые не используют оболочку, или для пользователей, которые используют оболочку, отличную от Bourne, но на практике это не распространено.