Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: LinuxFanUNIX в Jun 06, 2009, 04:36



Титла: Задаване на PATH обаче във bash скрипт
Публикувано от: LinuxFanUNIX в Jun 06, 2009, 04:36
Добър вечер.

Имам следният проблем:
Когато се опитам да си добавя някоя директория към $PATH става без проблем:
Код
GeSHi (Bash):
  1. PATH=/usr/local/bin:$PATH
и всичко си е ок. Обаче като го направя това във Bash script - не става и не става - т.е. PATH си стои същия като преди изпълнението на скрипта. Интересното е обаче че при самото изпълнение на скрипта PATH вече е обновена, обаче след излизането от скрипта - пак си е същата.

Та има ли начин да се зададе PATH през Bash скрипт (без рестарт обаче)...?

Благодаря предварително!


Титла: Re: Задаване на PATH обаче във bash скрипт
Публикувано от: romeo_ninov в Jun 06, 2009, 08:19
Да, само трябва да изпълниш скрипта така:
. /path/to/script


Титла: Re: Задаване на PATH обаче във bash скрипт
Публикувано от: LinuxFanUNIX в Jun 06, 2009, 12:37
Да, само трябва да изпълниш скрипта така:
. /path/to/script
Благодаря за отговора. Оправя се, но временно, т.е. като го изпълня под root и всичко е ок, а като обърна към обикновен потребител - той спи, т.е. си кара със стария PATH. После като обърна пак на root, PATH-а вече си е стария (т.е. без промените).

Други идеи?

Благодаря предварително!


Титла: Re: Задаване на PATH обаче във bash скрипт
Публикувано от: b2l в Jun 06, 2009, 12:44
Ми пробва ли да смениш permissions на файла:
Код:
#chmod 755 /path/to/file


Титла: Re: Задаване на PATH обаче във bash скрипт
Публикувано от: LinuxFanUNIX в Jun 06, 2009, 12:49
Ми пробва ли да смениш permissions на файла:
Код:
#chmod 755 /path/to/file
Току-що пробвах, пак не става.  :-[ Всякаш го прави само за текущия отворен терминал, т.е. като отворя нов терминал, независимо с какъв потребител, пак си е както си беше преди това (т.е. без промяна). Някакси го запомня за текущия терминал. И рестарт не помага.

Благодаря все пак!  ;)


Титла: Re: Задаване на PATH обаче във bash скрипт
Публикувано от: Hapkoc в Jun 06, 2009, 12:56
Четете бе, хора, четете!!!!!!

Всяка отделна инстанция на bash си изчита конфигурационните файлове. Ако в тях не е описана въпросната промянва в пътя - тя няма да се случи.

Ако искаш да важи за цялата система - вероятно трябва да го сложиш в /etc/profile.d/mypath.sh и да го направиш изпълним (за последното не съм сигурен). Ако искаш да важи за даден потребител - вероятно трябва да го добавиш в ~/.bashrc или ~/.profile или ~/.bash_profile.


Титла: Re: Задаване на PATH обаче във bash скрипт
Публикувано от: LinuxFanUNIX в Jun 06, 2009, 13:08
Четете бе, хора, четете!!!!!!

Всяка отделна инстанция на bash си изчита конфигурационните файлове. Ако в тях не е описана въпросната промянва в пътя - тя няма да се случи.

Ако искаш да важи за цялата система - вероятно трябва да го сложиш в /etc/profile.d/mypath.sh и да го направиш изпълним (за последното не съм сигурен). Ако искаш да важи за даден потребител - вероятно трябва да го добавиш в ~/.bashrc или ~/.profile или ~/.bash_profile.
Да, обаче иска рестарт.  ;)


Титла: Re: Задаване на PATH обаче във bash скрипт
Публикувано от: neter в Jun 06, 2009, 13:41
Да, обаче иска рестарт.  ;)
Не иска рестарт, а само да излезеш от всички конзоли, в които този потребител е влязъл. Но дори и да не излезеш, въведеното в ~/.bashrc ще важи за всяко ново влизане (и нова конзола). Ако единственото, което искаш да се случва, е добавяне на въпросния път, то можеш да добавиш такъв ред в ~/.bashrc за всеки потребител, който искаш да го има сред пътищата си
Цитат
export PATH="/usr/local/bin:$PATH"
Но, ако поради някаква причина, все пак искаш да е в скрипт в отделен файл, можеш да зададеш скрипта така
Цитат
. /път/до/скрипта
Отвори нова конзола и влез с потребителя - ще видиш, че промяната е влязла в сила. Ако искаш да влезе в сила и за обикновения потребител, с който текущо си си пуснал графичната среда, спри графичната среда, излез от този потребител (ако е нужно) и влез отново ;)


Титла: Re: Задаване на PATH обаче във bash скрипт
Публикувано от: LinuxFanUNIX в Jun 06, 2009, 15:22
Да, обаче иска рестарт.  ;)
Не иска рестарт, а само да излезеш от всички конзоли, в които този потребител е влязъл. Но дори и да не излезеш, въведеното в ~/.bashrc ще важи за всяко ново влизане (и нова конзола). Ако единственото, което искаш да се случва, е добавяне на въпросния път, то можеш да добавиш такъв ред в ~/.bashrc за всеки потребител, който искаш да го има сред пътищата си
Цитат
export PATH="/usr/local/bin:$PATH"
Но, ако поради някаква причина, все пак искаш да е в скрипт в отделен файл, можеш да зададеш скрипта така
Цитат
. /път/до/скрипта
Отвори нова конзола и влез с потребителя - ще видиш, че промяната е влязла в сила. Ако искаш да влезе в сила и за обикновения потребител, с който текущо си си пуснал графичната среда, спри графичната среда, излез от този потребител (ако е нужно) и влез отново ;)
Мерси. Благодаря. Имам напредък. Обаче няма ли вариант да важи за всички потребители без да е нужен рестарт на каквото и да е било?


Титла: Re: Задаване на PATH обаче във bash скрипт
Публикувано от: neter в Jun 06, 2009, 15:38
За да промениш текущите настройки на даден потребител, трябва да изпълниш твоя скрипт или реда с export за всеки потребител. Така, тези настройки ще важат за текущо влезлите потребители без да има нужда да излизат. Обаче, за да се запазят за постоянно (т.е., тези настройки да съществуват и при ново влизане на тези потребители), трябва да въведеш настройките в ~/.bashrc файла. Казано още по-кратко - за да влезнат в сила настройките веднага, без да се налага потребителите да излизат, и същевременно с това настройките да се запазят и при ново влизане на потребителите, нужно е да направиш две действия:
1. изпълни скрипта си или export командата за всеки текущо влязъл потребител;
2. въведи скрипта си или export командата в ~/.bashrc файла на всички потребители, за които искаш тази настройка да важи.
От това по-просто и ясно няма накъде.