Я пытаюсь ввести переменную и добавить ее в глобальный путь в ubuntu 10.04. Согласно официальные документы, / etc / environment - правильное место. Вот как выглядит мой пример:
GRADLE_HOME=/etc/gradle-0.9-preview-3
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$GRADLE_HOME/bin"
Переменная GRADLE_HOME добавляется в среду, но не интерпретирует переменную $ GRADLE_HOME во время присвоения PATH. Жесткое кодирование работает нормально. Ничего страшного, но я хотел бы знать, поддерживается ли подстановка переменных или есть лучший способ сделать это? Спасибо!
Это объяснение из связанного сообщения, похоже, дает ответ:
Поскольку / etc / environment не является сценарием оболочки. Это оболочка, которая выполняет расширение переменных среды. Модуль PAM pam_env - это то, что читает / etc / environment - и он рассматривает его как простой список пар KEY = VAL и соответствующим образом настраивает среду. В нем нет языка для расширения переменных.
Прочтите справочную страницу pam_env.conf (5).
Я считаю, что вам нужно добавить фигурные скобки вокруг имени переменной с правой стороны:
GRADLE_HOME=/etc/gradle-0.9-preview-3
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${GRADLE_HOME}/bin"
(Возможно, несуществующие) переменные среды могут использоваться в значениях с использованием синтаксиса $ {string} и (возможно, несуществующие) PAM_ITEM могут использоваться в значениях с использованием синтаксиса @ {string}. Оба символа $ и @ могут быть экранированы обратной косой чертой для использования в качестве буквальных значений, значения могут быть разделены знаком "", экранированные "не поддерживаются. Обратите внимание, что многие переменные среды, которые вы хотели бы использовать, могут не быть установлены к тому времени, когда модуль Например, HOME используется ниже несколько раз, но многие приложения PAM не делают его доступным к тому моменту, когда он вам нужен.