Как после загрузки установить переменную окружения на всю систему?

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
ddc
Бывший модератор
Сообщения: 3535
Статус: OpenBSD-compatible
ОС: OpenBSD -current

Как после загрузки установить переменную окружения на всю систему?

Сообщение ddc »

Давно интересовал этот вопрос, а теперь есть и практическое применение: я использую ноутбук то на работе, то дома, то в ВУЗе. Везде свои настройки подключения к интернет, в том числе и прокси. Если я экспортирую настройки прокси после загрузки, они действуют только в том терминале, где я это сделал. А как их можно экспортировать сразу на всю систему?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Как после загрузки установить переменную окружения на всю систему?

Сообщение sash-kan »

~/.bashrc, /etc/environment не подойдут?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Bolverk
Бывший модератор
Сообщения: 1571
ОС: Cygwin

Re: Как после загрузки установить переменную окружения на всю систему?

Сообщение Bolverk »

/etc/profile, в /etc/profile.d можно отдельные скрипты кидать (как это делают пакеты)
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: Как после загрузки установить переменную окружения на всю систему?

Сообщение madskull »

Я у себя делал скрипт в /etc/rc.d/, который при загрузке пинговал рабочий гейт - если успешно, то настройки "рабочие. Если нет, пинговался домашний, опять же, при успехе - настройки домашние. Ну а нет, значит и сети нет. При этом еще выставлялась переменная, которая анализировалась при старте icewm - там тоже кой-какие местозависимые вещи творились.

А вообще, для этих целей как нельзя лучше подходит dhcp. При условии, конечно, что оно есть везде.
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
ddc
Бывший модератор
Сообщения: 3535
Статус: OpenBSD-compatible
ОС: OpenBSD -current

Re: Как после загрузки установить переменную окружения на всю систему?

Сообщение ddc »

sash-kan
Они при загрузке используются, а мне нужно во время работы менять, как это в KDE делается...

Bolverk
Не понял мысль. Можно подробней?

madskull
Проблема в том, что дома я подключаюсь по одному интерфейсу, а на работе - по другому. При этом dhcp без указания интерфейса работает очень долго, себе дешевле ручками делать. И всё-таки это не решает проблему публикации переменной окружения в работающей системе.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Как после загрузки установить переменную окружения на всю систему?

Сообщение serzh-z »

ddc писал(а):
29.03.2006 18:55
sash-kan
Они при загрузке используются, а мне нужно во время работы менять, как это в KDE делается...


Да вроде как вопрос неправильный... Делается ли это вообще? После запуска приложения - нет. Т.к. каждая программа имеет свой блок переменных среды, который ей передаётся родителем.
Спасибо сказали:
Аватара пользователя
Bolverk
Бывший модератор
Сообщения: 1571
ОС: Cygwin

Re: Как после загрузки установить переменную окружения на всю систему?

Сообщение Bolverk »

ddc писал(а):
29.03.2006 18:55
Bolverk
Не понял мысль. Можно подробней?

я читал невнимательно и пропустил слова "после загрузки".
точнее, /etc/profile и исполняемые файлы, лежащие в /etc/profile.d, отрабатывают при логине пользователя до его личных настроек (.profile, .bashrc, ...) и могут устанавливать переменные. Упаковщики кладут туда скрипты, выставляющие переменные, необходимые для работы приложений.
Спасибо сказали:
Аватара пользователя
ddc
Бывший модератор
Сообщения: 3535
Статус: OpenBSD-compatible
ОС: OpenBSD -current

Re: Как после загрузки установить переменную окружения на всю систему?

Сообщение ddc »

Bolverk
Ну примерно так оно у меня происходит сейчас (было три режима, каждый на своём уровне исполнения: без сети, дом и офис), но уже не устраивает в связи с расширением вариантов.

serzh-z
Простой эксперимент:
  • задайте неправильные настройки прокси;
  • запустите Akregator, получите ошибки сбора;
  • исправьте настройки;
  • нажмите в Akregator кнопку принудительного сбора; всё соберётся!
Неужели с терминалами это не пройдёт?
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Как после загрузки установить переменную окружения на всю систему?

Сообщение elide »

но уже не устраивает в связи с расширением вариантов.
а просто ядру параметры передавать?
слава роботам!
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Как после загрузки установить переменную окружения на всю систему?

Сообщение serzh-z »

ddc писал(а):
29.03.2006 23:57
Простой эксперимент:
  • задайте неправильные настройки прокси;
  • запустите Akregator, получите ошибки сбора;
  • исправьте настройки;
  • нажмите в Akregator кнопку принудительного сбора; всё соберётся!
Неужели с терминалами это не пройдёт?


Не знаю, что есть Akregator, но полагаю, что тут дело не в нём. Вероятно речь идёт о emerge (и сборке Акрекатора). Т.е. изначально запускаются скрипты bash, bash при запуске читает свои дот-файлы (или параметры в /etc). Потом уже отсюда http_proxy передаются дочерним процесам - т.е. emerge. Разумеется, если поправить настройки (в .bash_rc, .bash_profile и т.д.), и перезапустить сборку, то будут использованы новые дот-файлы.

Т.е. в любом случае всё упирается в то, что после запуска приложения нельзя заставить его увидеть новые переменные среды.

Если же необходимо сделать так: поменять переменные и увидеть их новые значения в эмуляторе терминала (т.е. новые значения будут распространяться лишь на этот терминал его его потомков), то разве просто перезапуск терминала (в котором запуститься, скажем, bash - перечитает свои настройки и т.д. и т.п.) не даёт этого результата?
Спасибо сказали:
Аватара пользователя
ddc
Бывший модератор
Сообщения: 3535
Статус: OpenBSD-compatible
ОС: OpenBSD -current

Re: Как после загрузки установить переменную окружения на всю систему?

Сообщение ddc »

serzh-z
Да я это всё знаю. Я не знаю, как присвоить переменную уже запущенному процессу. И естественно речь идёт не о установке переменных для терминала и потомков - для этого есть export.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Как после загрузки установить переменную окружения на всю систему?

Сообщение serzh-z »

ddc писал(а):
30.03.2006 23:41
Я не знаю, как присвоить переменную уже запущенному процессу.


Так в том-то и фишка - вроде как нельзя такое сделать. Ни в Linux, ни, даже, в Windows. Можно спросить Флука - полагаю, что он может осветить данный вопрос куда лучше.
Спасибо сказали: