Portál AbcLinuxu, 10. května 2025 05:34

Dotaz: Jak spustit shell skript v login shellu

28.9.2008 15:44 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Jak spustit shell skript v login shellu
Přečteno: 768×
Odpovědět | Admin
Zdravím,

udělal jsem si desktop záznam pro jeden program, který vyžaduje, aby byl startovací skript spuštěn v login shellu, protože potřebuje mít přístup k němterým systémovým proměnným které mám nadefinované v profilu (JAVA_HOME). Jak docílit toho, aby se bash skript spustil v login shellu?

Zkouším bash -l název_skriptu.sh - ale nezabírá to.
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=IntelliJ IDEA
GenericName=Java Development IDE
Type=Application
Categories=Development;
FilePattern=iml;ipr;iws
Exec=bash -l /opt/java/idea/bin/idea.sh %f
Terminal=false
StartupNotify=false
Icon=/opt/java/idea/bin/idea32.png
LZ
Later --- Lukáš Zapletal
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

28.9.2008 15:46 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak spustit shell skript v login shellu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Příkaz source nebo . (tečka). Podrobnosti najdete v man bash.
28.9.2008 16:36 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Jak spustit shell skript v login shellu
To má ale háček -- source je příkaz Bashe, ten bohužel nemohu použít externě (v záznamu [Desktop]). Potřeboval bych opravdu spustit nový bash...
28.9.2008 17:14 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Jak spustit shell skript v login shellu
Skúsil som si do toho exec pridať shell skript, ktorý uloží premenné prostredia do nejakého súboru. S tým parametrom -l sa mi uložia aj tie premenné, ktoré sú nadefinované v .bash_profile.

Ak to nefunguje nepomohlo by prípadne v tom skripte použiť source na súbor .bash_profile?
28.9.2008 18:26 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak spustit shell skript v login shellu
Ale nový bash už nebude příkaz spuštěný v login shellu. Ostatně záznam v Desktop se bude spouštět jako potomek desktopového prostředí, takže to ani nikdy spuštěno v login shellu být nemůže. Ale pokud jde jenom o ty proměnné prostředí nadefinované v .bashrc, spusťte bash jako /bin/bash, ne jako /bin/sh, tím by se měl .bashrc zpracovat. A pokud potřebujete zpracovat i /etc/profile a podobné, zkuste /bin/bash -l. Nebo se podívejte v man bash do sekce Invocation, tam je to popsáno víc.
28.9.2008 19:21 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Jak spustit shell skript v login shellu
/bin/bash nepomohl - stále to nečte proměnné z profilu. Asi bude někde problém v tom, jak to desktopové prostředí spouští...
28.9.2008 20:17 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak spustit shell skript v login shellu
Čemu říkáte „proměnné z profilu“? /bin/bash zpracuje .bashrc, takže by měly existovat proměnné nadefinované tam. Ale pro zpracování /etc/profile a ~/.profile je nutné použít přepínač -l.
28.9.2008 20:43 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Jak spustit shell skript v login shellu
Ty proměnné mám v bashrc ale nejsou nadefinované, a to ani když definuji v .desktop souboru /bin/bash -l nazev_skriptu. Zřejmě to bude způsobeno tím, jak pracovní prostředí program spouští. Netuším, vzdávám to.

Udělal jsem si pomocný skript, který:

- nastaví potřebnou proměnnou - spustí původní skript

tj.

PROMENNA=hodnota /puvodni/skript.sh

Díky za pomoc

LZ
28.9.2008 21:15 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: Jak spustit shell skript v login shellu
A ty proměnné o které vám jde exportujete? viz. help export
28.9.2008 21:58 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Jak spustit shell skript v login shellu
Problém je možno v tom, že .bashrc sa používa len pri interaktívnom shell. Login shell načítava súbor .bash_profile (prípadne .bash_login alebo .profile).

Niektoré distribúcie pridávajú do .bash_profile aj načítanie toho .bashrc (napr. moja Mandriva to tak robí).
29.9.2008 08:34 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Jak spustit shell skript v login shellu
Aha, tak to bych si mel nastaveni dulezitych promennych dat do .bash_profile a nikoli do .bashrc.
29.9.2008 08:40 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: Jak spustit shell skript v login shellu
To záleží na vás. Stačí si do .bash_profile přidat
if [ -e ~/.bashrc ]; then
   . ~/.bashrc
fi
a máte po starostech :-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.