Как сделать чтобы определённая программа (Всегда запускалась с определённой переменной окружения)

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

Модератор: Bizdelnick

MaGIc laNTern
Сообщения: 537
Статус: 人です
ОС: Gentoo

Как сделать чтобы определённая программа

Сообщение MaGIc laNTern »

Такой вопрос.
Я могу как-нибудь сделать так чтобы конкретная программа у меня всегда запускалась с LANG=ru_RU.CP1251?
Alias'ы bash'а не подойдут: мне неудобно каждый раз запускать bash для запуска данной программы (кстати, программа здесь beep-media-player).
Казалось-бы дело упрощается тем что запускаю Я программу эту всегда через sven, но он-то запускает команды не через bash, поэтому через него переменную окружения задать не получится.
Спасибо сказали:
Аватара пользователя
Данил
Сообщения: 944
ОС: windows xp, cruncheee, ddwrt

Re: Как сделать чтобы определённая программа

Сообщение Данил »

Пиши скрипт
У меня такой
#!/bin/sh
export LANG=ru_RU.KOI8-R
xmms
ASUS eee pc 701 [windowsXP sp3] [Ubuntu linux]
wi-fi router d-link dir-400 [ddWRT v24 SP1 linux]
[sony psp 2008 slim wi-fi netBSD]
nas d-link dsm-600

Противник HAL NETWORKMANAGER и других подобных паделок!!!
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Как сделать чтобы определённая программа

Сообщение t.t »

(Данил @ Mar 11 2006, в 22:37) писал(а):#!/bin/sh
export LANG=ru_RU.KOI8-R
xmms
Тогда уж лучше exec xmms
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
MaGIc laNTern
Сообщения: 537
Статус: 人です
ОС: Gentoo

Re: Как сделать чтобы определённая программа

Сообщение MaGIc laNTern »

Да... Скрипт в принципе подходящее решение, что-то Я об этом не подумал.
Но у меня ведь как сделано то. В sven на определённую клавишу забиндена команда beep-media-player --play-pause
И Я соответственно одной и той же кнопкой делаю три вещи: запускаю BMP и делаю чтобы в нём сразу начинала играть музыка, ставлю музыку на паузу, инициализирую продолжение воспроизведения музыки. А так у меня будет всегда задаваться переменная окружения... Что-то не то получается. Мне кажется что оно так может начать глючить.
Спасибо сказали:
Аватара пользователя
Данил
Сообщения: 944
ОС: windows xp, cruncheee, ddwrt

Re: Как сделать чтобы определённая программа

Сообщение Данил »

2tt
Чем лучше?
MaGIc laNTern
Да, это будет посложней...
Я так понял, что переменную окружения надо ставить один раз, а потом уже пускать bmp.
Может быть скрипт создает файл-метку, и впоследствии, при нажатии кнопки, проверяет её и сразу-же исполняет bmp---
Скрипт-гуру где вы!!!
ASUS eee pc 701 [windowsXP sp3] [Ubuntu linux]
wi-fi router d-link dir-400 [ddWRT v24 SP1 linux]
[sony psp 2008 slim wi-fi netBSD]
nas d-link dsm-600

Противник HAL NETWORKMANAGER и других подобных паделок!!!
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: Как сделать чтобы определённая программа

Сообщение madskull »

Данил писал(а):
11.03.2006 23:18
Я так понял, что переменную окружения надо ставить один раз, а потом уже пускать bmp.
Может быть скрипт создает файл-метку, и впоследствии, при нажатии кнопки, проверяет её и сразу-же исполняет bmp---
Скрипт-гуру где вы!!!

"А хрен ли думать, все давно придумано!" Г.Хазанов

Вот так у меня одной кнопкой управляется xmms

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

#!/bin/bash

if [ -z "$(pidof xmms)" ]; then
        exec xmms
else
        xmms --pause
fi

Ничего сложного.
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
polachok
Бывший модератор
Сообщения: 2199
Статус: главный форумный маргинал
ОС: gnu/linux

Re: Как сделать чтобы определённая программа

Сообщение polachok »

Мне кажется что оно так может начать глючить.

а мне нет. впрочем уже ответили :))
И немедленно выпил.
Спасибо сказали:
Аватара пользователя
Данил
Сообщения: 944
ОС: windows xp, cruncheee, ddwrt

Re: Как сделать чтобы определённая программа

Сообщение Данил »

2madskull
только pidof по умолчанию только из-под рута...
2 polachok
??????
Что не начнет?
ASUS eee pc 701 [windowsXP sp3] [Ubuntu linux]
wi-fi router d-link dir-400 [ddWRT v24 SP1 linux]
[sony psp 2008 slim wi-fi netBSD]
nas d-link dsm-600

Противник HAL NETWORKMANAGER и других подобных паделок!!!
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: Как сделать чтобы определённая программа

Сообщение madskull »

polachok писал(а):
11.03.2006 23:42
а мне кажется что не начнет.

Конечно не начнет. Теоритически, наоборот, может начать глючить, если запускать с разным окружением (то есть первый раз выставить, а потом, при управлении, нет). А практически -- думаю, ничего страшного.

Данил писал(а):
11.03.2006 23:46
2madskull
только pidof по умолчанию только из-под рута...

Это что-то новенькое... В Арче, по крайней мере, pidof лежит в /bin.
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
Данил
Сообщения: 944
ОС: windows xp, cruncheee, ddwrt

Re: Как сделать чтобы определённая программа

Сообщение Данил »

а в федоре4 в /sbin
ASUS eee pc 701 [windowsXP sp3] [Ubuntu linux]
wi-fi router d-link dir-400 [ddWRT v24 SP1 linux]
[sony psp 2008 slim wi-fi netBSD]
nas d-link dsm-600

Противник HAL NETWORKMANAGER и других подобных паделок!!!
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: Как сделать чтобы определённая программа

Сообщение madskull »

Данил писал(а):
11.03.2006 23:57
а в федоре4 в /sbin

Ну и указывай полный путь. Или, там даже нет прав на исполнение нерутом?
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
Данил
Сообщения: 944
ОС: windows xp, cruncheee, ddwrt

Re: Как сделать чтобы определённая программа

Сообщение Данил »

Хммм...
/sbin/pidof xmms работает! Спасибо!
Но только странно, почему /sbin не прописана в юзерских конфигах.
ASUS eee pc 701 [windowsXP sp3] [Ubuntu linux]
wi-fi router d-link dir-400 [ddWRT v24 SP1 linux]
[sony psp 2008 slim wi-fi netBSD]
nas d-link dsm-600

Противник HAL NETWORKMANAGER и других подобных паделок!!!
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Как сделать чтобы определённая программа

Сообщение t.t »

(Данил @ Mar 11 2006, в 23:18) писал(а):2tt
Чем лучше?
Тем что процесс sh не останется висеть.

(Данил @ Mar 11 2006, в 23:57) писал(а):а в федоре4 в /sbin
Да, это действительно что-то новенькое. Никогда раньше такого не слышал. Чем эта программа могла показаться разработчикам федоры опасной для запуска от простого пользователся, ума не приложу.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
MaGIc laNTern
Сообщения: 537
Статус: 人です
ОС: Gentoo

Re: Как сделать чтобы определённая программа

Сообщение MaGIc laNTern »

madskull:
Спасибо! Мне пришёл в голову тот-же алгоритм (за исключением того что Я думал делать ps -A | grep ...), только Я не знал как реализовать его на bash, а php (с которым Я обычно дружу великолепно) мне показался неподходящим (хотя в общем-то 5.1 версия настолько производительна, что наверняка уже на равных может соперничать с shell).
UPD:
Кстати, у меня ASPLinux и тут тоже у юзера в PATH не подставляются /sbin, /usr/sbin, /usr/local/sbin, но если писать полный путь - никаких проблем.
Из под юзера Я обычно и не пользуюсь тем что лежит в этих каталогах (хотя pidof у меня как и многое другое лежит в /sbin), но когда Я делаю su root, а PATH не меняется - немного раздражает. Раньше то Я просто работал всё время под root в локали CP1251 и вроде как никаких проблем не испытывал... Но почему-то всё таки решил изменить политику своего компьютера...
Спасибо сказали:
Аватара пользователя
Данил
Сообщения: 944
ОС: windows xp, cruncheee, ddwrt

Re: Как сделать чтобы определённая программа

Сообщение Данил »

2t.t
И правда, процессов xmms стало на 1 меньше(теперь2, а не 3)
Спасибо, теперь буду знать.
ASUS eee pc 701 [windowsXP sp3] [Ubuntu linux]
wi-fi router d-link dir-400 [ddWRT v24 SP1 linux]
[sony psp 2008 slim wi-fi netBSD]
nas d-link dsm-600

Противник HAL NETWORKMANAGER и других подобных паделок!!!
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Как сделать чтобы определённая программа

Сообщение elide »

но когда Я делаю su root, а PATH не меняется - немного раздражает.
а ты делай просто su -
слава роботам!
Спасибо сказали:
MaGIc laNTern
Сообщения: 537
Статус: 人です
ОС: Gentoo

Re: Как сделать чтобы определённая программа

Сообщение MaGIc laNTern »

Надо-же! Действительно, так PATH меняется.
А почему так?
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Как сделать чтобы определённая программа

Сообщение elide »

А почему так?
ну я даже не знаю.... может все-таки стоит попробовать почитать man su ???
слава роботам!
Спасибо сказали:
MaGIc laNTern
Сообщения: 537
Статус: 人です
ОС: Gentoo

Re: Как сделать чтобы определённая программа

Сообщение MaGIc laNTern »

Да вот Я хотел, просто не знал как Я буду искать по символу '-'. Думал что это не так просто и man большой.
Сейчас прочитал... Хотя не вполне понял. То есть всё что делает эта опция (а также её alias'ы '-l' и '--login'), так это исполняет bashrc того юзера, в которого логинишься, а когда выходишь - снова исполняет твой?
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: Как сделать чтобы определённая программа

Сообщение madskull »

MaGIc laNTern писал(а):
12.03.2006 16:33
Да вот Я хотел, просто не знал как Я буду искать по символу '-'. Думал что это не так просто и man большой.
Сейчас прочитал... Хотя не вполне понял. То есть всё что делает эта опция (а также её alias'ы '-l' и '--login'), так это исполняет bashrc того юзера, в которого логинишься, а когда выходишь - снова исполняет твой?

man bash на предмет опций -l/--login :D

Просто su, насколько я понимаю, запускает bash либо просто (окружение наследуется), либо с опцией --login и отрабатывется "новое" окружение.

А при выходе ничего не снова не исполняется, просто восстанавливается старое. Как и при запуске любой другой программы.
ArchLinux / IceWM
Спасибо сказали: