изменение / etc / environment не повлияло на мои переменные окружения


10

Я пытаюсь установить экспертную систему Euler, следуя этим инструкциям . Чтобы добавить переменную среды, я отредактировал мой, /etc/environmentчтобы он стал следующим:

 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:
/home/mohammad/Desktop/eye"
 EYE_HOME = "/home/mohammad/Desktop/eye"

Но когда я использую, printenv PATHя не вижу новый каталог, добавленный к моему пути.

Что я здесь не так делаю?


Эта ссылка сейчас не работает (SourceForge не работает), но можете ли вы указать, хотите ли вы общесистемные переменные среды? Поскольку это для приложения, это, вероятно, так, и поэтому многие ответы ниже неправильны.
Майкл Шепер

Ответы:


8

Я не знаю причину, по которой PATH не изменился (после повторного входа), но

EYE_HOME = "/home/mohammad/Desktop/eye"
--------^-^

эти пробелы не позволяют установить EYE_HOME.

Следует отметить, что /etc/environmentэто не файл сценария, а своего рода файл назначения, который читается PAM. OTOH такие пробелы не допускаются в файлах сценариев, как /etc/profileи ~/.profileлибо.

Если вы используете файл сценария, вам нужно экспортировать переменные, как показано в ответе Avinash Raj.

Обратите внимание, что хотя ~/.bashrcработает, если вы запускаете вашу программу из окна терминала, она может не работать, если вы запускаете ее из графического окружения, так как она не поставляется менеджером дисплея.


@ gunnar-hijalmarsson --- правильно. То, что менеджер дисплеев не запускается из моей оболочки, кусает меня много раз. Я опубликовал трюк, чтобы увидеть переменные, которые установлены в DE: askubuntu.com/a/356973/16395
Rmano

Хороший трюк, @Rmano! Есть ли шанс, что вы можете добавить его на help.ubuntu.com/community/EnvironmentVariables ?
Гуннар Хьялмарссон

Спасибо - я никогда не редактировал ни одного из них, и я не знаю, были ли у меня разрешения. Я посмотрю на это, если у меня будет время, но в остальном не стесняйся копировать / вставлять все, что ты захочешь - эта страница нуждается в обновлении. Один вопрос: не все менеджеры дисплея (LightDM, GDM, KDM) источника , ~/.profileдаже если моя по умолчанию оболочка не bashтолько, например, zsh?
Rmano

Проверено мной. Я использую zsh; приложения, запущенные DE, видят переменные, установленные в ~/.pam_environmentи ~/.profile(НЕ ~/.zprofile). Это хорошо и плохо, но плохая часть решается путем изменения, .profileтак что это источник моего .zprofileи .zshenv. И я подтверждаю, что использование .pam_environmentплохо, иногда оно перезаписывается (не должно, но это так).
Rmano

@Rmano: я знаю, что ~/.profileэто источники lightdm и gdm; не уверен насчет kdm.
Гуннар Хьялмарссон

5
gedit ~/.bashrc

После этого добавьте следующие строки,

export EYE_HOME="/home/mohammad/Desktop/eye"
export PATH=$PATH:$EYE_HOME

Сохраните файл и загрузите его,

source ~/.bashrc

1
это будет системная переменная?
Моха всемогущий верблюд


1
@AvinashRaj: эти переменные не только будут доступны только пользователю, но они не будут видны, если приложение не запускается из терминала командной строки ... графическая среда запускается сама по себе, без использования пользовательской оболочки. См. Askubuntu.com/a/356973/16395
Rmano

0

Вы также можете попробовать эти два файла для конфигурации всей системы:

  • /etc/profile
  • /etc/bashrc

Для широкой пользовательской конфигурации:

  • $HOME/.profile
  • $HOME/.bashrc

Просто добавьте переменные, как вы это сделали /etc/environment. Но вам нужно будет войти в систему и выйти из нее (или запустить соответствующую перезагрузку). Может быть, при входе и выходе из системы /etc/environmentбудет работать, но я не уверен.


-1

Вы хотите отредактировать ваш файл .bashrc в вашем домашнем каталоге.

Когда вы редактируете путь, вы должны включить его :$PATHв конец, чтобы не заменить текущий путь.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.