Задача: У меня есть некоторый скрипт который вычисляет переменную окружения по заданному алгоритму а затем экспортирует ее. Хочу чтобы этот скрипт выполнялся при загрузке системы и переменная была видна во всех запускаемых в системе программах, оболочках и.т.д. - типа глобально.
Прочитал много чего на эту тему, но подходящего варианта НЕ нашел:
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. Куда мне вставить мой скрипт, чтобы он выполнялся при загрузке, а экспортированные в нем переменные были видны отовсюду всем и всегда.
Четко и ясно про переменные среды(окружения)
Модератор: Модераторы разделов
-
PID
- Сообщения: 7
- ОС: Ubuntu
Четко и ясно про переменные среды(окружения)
Моя система: Ubuntu Linux 8.1; CPU 1,6MHz; RAM 1,5Gb
-
yurik81
- Сообщения: 85
- ОС: Ubuntu 9.10 и, немного, WinXP
Re: Четко и ясно про переменные среды(окружения)
Код: Выделить всё
~/.xsessionrc(создать если нету)
Чтобы попробовать Убунту, достаточно запустить её прямо с диска!
Не путайте Убунту с Кубунту и прочими!
Не путайте Убунту с Кубунту и прочими!
-
PID
- Сообщения: 7
- ОС: Ubuntu
Re: Четко и ясно про переменные среды(окружения)
Да, так намного лучше. Спасибо.
Только хочу еще, чтобы этот скрипт исполнялся при старте у всех юзеров в.т.ч. у рута.
Если он лежит в ~/ я так понимаю он только у меня работает.
1ый вопрос остался без ответа.
Только хочу еще, чтобы этот скрипт исполнялся при старте у всех юзеров в.т.ч. у рута.
Если он лежит в ~/ я так понимаю он только у меня работает.
1ый вопрос остался без ответа.
Моя система: Ubuntu Linux 8.1; CPU 1,6MHz; RAM 1,5Gb
-
nesk
- Сообщения: 2268
- Статус: Линукссаксовец
- ОС: MS Windows XP Home SP3
Re: Четко и ясно про переменные среды(окружения)
Переменные существуют внутри процесса. У разных процессов в системе может быть разный набор переменных
Есть процедура наследования переменный, то есть порожденный процесс может унаследовать переменные среды у родителя, и только так. И только сверху вниз. Если процесс меняет переменную среды, то это влияет только на него и возможно порожденные им процессы.
Тот процесс, который выполнял rc.local, в котором были экспортированы переменные, не является предком ваших иксов и башей.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.
0xDEFEC8ED
0xDEFEC8ED
-
PID
- Сообщения: 7
- ОС: Ubuntu
Re: Четко и ясно про переменные среды(окружения)
Ну да, все так и есть. Насколько я понимаю все процессы порождаются от init. Можно ли как-то задать переменные окружения для init, чтобы они раздавались всем дочерним процессам? Или это неграмотно? Если неграмотно то почему?
Моя система: Ubuntu Linux 8.1; CPU 1,6MHz; RAM 1,5Gb
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Четко и ясно про переменные среды(окружения)
всем не получится - надо что-бы каждая мама явно экспортировала переменные от бабушек...
глобальных переменных в баше нет. можно "расширять" скрипты, например:
Код: Выделить всё
#!/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-). Примерно такие дочки-матери
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Четко и ясно про переменные среды(окружения)
для x-клиентов подойдёт
/etc/X11/Xsession.d/99somefile
/etc/X11/Xsession.d/99somefile
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог