Как установить переменные среды и PATH для всего сеанса?

Как установить переменные среды и PATH для всего сеанса?

Я видел в Интернете, что у других людей тоже была эта проблема, но решения были неубедительными, поэтому я хотел бы снова привлечь к ней внимание.

Согласно этой странице в вики Ubuntu: https://help.ubuntu.com/community/EnvironmentVariables Рекомендуемый способ установки переменных среды на уровне сеанса — изменение ~/.pam_environment.

Вот какова моя цель:

  1. Я хочу создать переменную среды ANDROID_HOME, которая в качестве значения будет содержать путь к определенному месту в моей домашней папке.
  2. Я хочу добавить две папки в PATH.

Вот что я сделал. Файл ~/.pam_environment не существовал, поэтому я создал его и добавил в него следующие строки:

ANDROID_HOME=${HOME}/Android/Sdk
PATH DEFAULT=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools

Вышел из системы и снова вошел в систему.

Результат не ожидаемый. Я открыл терминал и выполнил echo $ANDROID_HOME и вот что я получил:

${HOME}/Android/Sdk

Похоже, ${HOME}не заменяется на путь к моей домашней папке. Почему так?

Наблюдаем cdза -ing для $ANDROID_HOME (Android/Sdk на самом деле находится в моей домашней папке):

anvar@crazymachine:~$ cd $ANDROID_HOME
bash: cd: ${HOME}/Android/Sdk: No such file or directory

Также повтор $PATH дал мне это:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:${HOME}/Android/Sdk/tools:${HOME}/Android/Sdk/platform-tools

Почему переменные не заменены их значениями, как можно было бы логично предположить, особенно если учесть, что пример на вышеупомянутом сайте создает впечатление, что переменные можно использовать внутри значений?

Как правильно задать переменные среды сеанса, к которым также будут иметь доступ программы с графическим интерфейсом?

решение1

Пример ввики, для установки переменных сеанса через ~/.pam_environment, в примечании говорится:

Синтаксис, используемый для изменения PATH, который отличается от синтаксиса файлов скриптов, необходим для работы расширения переменных.

Следовательно, ваша первая строка должна выглядеть так:

ANDROID_HOME DEFAULT=${HOME}/Android/Sdk

решение2

Два предложения:

1-е - форма ваших экологических заявлений должна быть следующей:

ANDROID_HOME=$HOME/Android/Sdk
PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

во-вторых, разместите ваши новые заявления об окружающей среде в~/.profile

решение3

Я думаю, вам может понадобиться export HOMEпосле настройки переменной path (в ~/.bashrc мы это делаем)

Связанный контент