Четко и ясно про переменные среды(окружения)

Kubuntu, Xubuntu и другие

Модератор: Модераторы разделов

Аватара пользователя
PID
Сообщения: 7
ОС: Ubuntu

Четко и ясно про переменные среды(окружения)

Сообщение PID »

Задача: У меня есть некоторый скрипт который вычисляет переменную окружения по заданному алгоритму а затем экспортирует ее. Хочу чтобы этот скрипт выполнялся при загрузке системы и переменная была видна во всех запускаемых в системе программах, оболочках и.т.д. - типа глобально.

Прочитал много чего на эту тему, но подходящего варианта НЕ нашел:
1. /etc/environment
Не катит т.к. там можно указать лишь готовые переменные окружения, а скрипт с вычислениями там не работает

2. файлы /etc/profile, ~/.bash_profile, ~/.bash_login, ~/.profile, ~/.bashrc
Пробовал вставлять скрипт туда. Вроде работает, но только для bash
Если запустить программу из Gnome/KDE то она нужную переменную не видит

3. файлы /etc/init.d/rc, /etc/init.d/rc.local, /etc/rc.local
Пробовал вставлять скрипт туда. Сам он выполняется, но экспортирование переменной не происходит.
Переменной не видно ни в bash'е ни в Gnome.

Собственно вопросы:
1. Почему, когда я экспортирую переменною в rc.local ее затем не видно под Хами и в Bash'е? Куда она пропадает?
2. Куда мне вставить мой скрипт, чтобы он выполнялся при загрузке, а экспортированные в нем переменные были видны отовсюду всем и всегда.
Моя система: Ubuntu Linux 8.1; CPU 1,6MHz; RAM 1,5Gb
Спасибо сказали:
Аватара пользователя
yurik81
Сообщения: 85
ОС: Ubuntu 9.10 и, немного, WinXP

Re: Четко и ясно про переменные среды(окружения)

Сообщение yurik81 »

Код: Выделить всё

~/.xsessionrc

(создать если нету)
Чтобы попробовать Убунту, достаточно запустить её прямо с диска!
Не путайте Убунту с Кубунту и прочими!
Спасибо сказали:
Аватара пользователя
PID
Сообщения: 7
ОС: Ubuntu

Re: Четко и ясно про переменные среды(окружения)

Сообщение PID »

Да, так намного лучше. Спасибо.
Только хочу еще, чтобы этот скрипт исполнялся при старте у всех юзеров в.т.ч. у рута.
Если он лежит в ~/ я так понимаю он только у меня работает.

1ый вопрос остался без ответа.
Моя система: Ubuntu Linux 8.1; CPU 1,6MHz; RAM 1,5Gb
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Четко и ясно про переменные среды(окружения)

Сообщение nesk »

PID писал(а):
09.10.2009 15:50
1. Почему, когда я экспортирую переменною в rc.local ее затем не видно под Хами и в Bash'е? Куда она пропадает?

Переменные существуют внутри процесса. У разных процессов в системе может быть разный набор переменных
Есть процедура наследования переменный, то есть порожденный процесс может унаследовать переменные среды у родителя, и только так. И только сверху вниз. Если процесс меняет переменную среды, то это влияет только на него и возможно порожденные им процессы.
Тот процесс, который выполнял rc.local, в котором были экспортированы переменные, не является предком ваших иксов и башей.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
PID
Сообщения: 7
ОС: Ubuntu

Re: Четко и ясно про переменные среды(окружения)

Сообщение PID »

Ну да, все так и есть. Насколько я понимаю все процессы порождаются от init. Можно ли как-то задать переменные окружения для init, чтобы они раздавались всем дочерним процессам? Или это неграмотно? Если неграмотно то почему?
Моя система: Ubuntu Linux 8.1; CPU 1,6MHz; RAM 1,5Gb
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Четко и ясно про переменные среды(окружения)

Сообщение drBatty »

PID писал(а):
09.10.2009 17:40
Ну да, все так и есть. Насколько я понимаю все процессы порождаются от init. Можно ли как-то задать переменные окружения для init, чтобы они раздавались всем дочерним процессам? Или это неграмотно? Если неграмотно то почему?

всем не получится - надо что-бы каждая мама явно экспортировала переменные от бабушек...
глобальных переменных в баше нет. можно "расширять" скрипты, например:

Код: Выделить всё

#!/bin/bash
#скрипт XXX
ABC="1"
echo $DEF


Код: Выделить всё

#!/bin/bash
#скрипт YYY
DEF=2
source XXX
echo $ABC
echo $DEF


скрипт YYY будет выполнятся так, как будто в него скопипастили скрипт XXX. (вместо source XXX).

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

rc.local это (насколько я помню) тоже дочка, потому ничего не передаст мамке.

Да, кончается это всё exec, оболочка завершается, и на её место встаёт другая, уже с правами юзера(точнее это происходит через бинарную программу где вы логинитесь, а как через неё просовывать окружение - не знаю. через su можно: su-). Примерно такие дочки-матери :)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Четко и ясно про переменные среды(окружения)

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

для x-клиентов подойдёт
/etc/X11/Xsession.d/99somefile
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали: