Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Ubuntu: переменные окружения


(Hohner) #1

Здравствуйте. Есть вопрос: как установить переменные окружения в Ubuntu?

Данная команда  export JAVA_HOME=/usr/lib/jvm/jdk1.7 работает, но переменная действует только в течении одного сеанса терминала.

А как установить переменную на постоянно?

Может у кого есть подробное руководство пользователя для новичков? Потому что только знакомлюсь с этой системой и вопросов достаточно много.


(apetrovskiy) #2

Вот, например, "Persistent environment variables" тут.


(ArtemIljin) #3

пропишите её в ~/.bashrc и в терминале перегрузите этот файл $source ~/.bashrc


(apetrovskiy) #4

А зачем ставить эту переменную в session-wide файл? Наверняка путь к джаве един для всех пользователей. Можно сразу задать в "System-wide environment variables".

.bashrc они вовсе не рекомендуют (но это обоснование не в пример запутаннее первых двух :)):

 

Not recommended:

  • ~/.profile - This is probably the best file for placing environment variable assignments, since it gets executed automatically by the DisplayManager during the start-up process desktop session as well as by the login shell when one logs-in from the textual console.

  • ~/.bash_profile or ~./bash_login - If one of these file exist, bash executes it rather than "~/.profile" when it is started as a login shell. (Bash will prefer "~/.bash_profile" to "~/.bash_login"). However, these files won't influence a graphical session by default.

  • ~/.bashrc - Because of the way Ubuntu currently sets up the various script files by default, this may be the easiest place to set variables in. The default configuration nearly guarantees that this file will be executed in each and every invocation of bash as well as while logging in to the graphical environment. The performance cost of this will be negligible; the overhead of forking and execing bash will massively dominate the small cost of setting a handful of variables.

рекомендуют же system-wide вписывать сюда:

 

Environment variable settings that affect the system as a whole (rather than just a particular user) should not be placed in any of the many system-level scripts that get executed when the system or the desktop session are loaded, but into

  • /etc/environment - This file is specifically meant for system-wide environment variable settings. It is not a script file, but rather consists of assignment expressions, one per line. Specifically, this file stores the system-wide locale and path settings.

надо полагать, что этот файл читается всеми оболочками (даже если приложение запускает какой-нибудь sh или ash внутри себя), хотя я замечал, что некоторые вещи чуваки из убунту меняют от релиза к релизу, не особо напрягаясь оповестить всех (внезапно переставал раобтать удалённый вход в иксы (году так в 2007-м это было) - ага, настройки kde вдруг оказывались в другом файле :):)).

 


(ArtemIljin) #5

Согласен. Просто выдал первый способ, который работает. А так - да, делать нужно правильно.


(Hohner) #6

Спасибо за советы. Но похоже мне нужно разобраться с правами доступа для начала :)

Попытался отредактировать файл  /etc/environment ,     но система обругала и сказала, что недостаточно прав. Ладно, придется вчитаться в мануал.


(Hohner) #7

Спасибо за советы. Но похоже мне нужно разобраться с правами доступа для начала :)

Попытался отредактировать файл  /etc/environment ,     но система обругала и сказала, что недостаточно прав. Ладно, придется вчитаться в мануал.


(apetrovskiy) #8

sudo vi /etc/environment или как-то так, и редактор на выбор (сейчас нет под боком).