Portál AbcLinuxu, 13. května 2024 04:56


Dotaz: bash - nastavení proměnné prostředí

hajma avatar 24.7.2006 22:12 hajma | skóre: 27 | blog: hajma | Říčany
bash - nastavení proměnné prostředí
Přečteno: 1158×
Odpovědět | Admin
DD, měl jsem dojem, že když na řádku v bashi změním před příkazem proměnnou prostředí, tak se pro ten příkaz změní, proč mi to nefunguje? Díky
[hajma@localhost ~]$ echo $LANG
cs_CZ
[hajma@localhost ~]$ LANG=abc echo $LANG
cs_CZ
[hajma@localhost ~]$
21 promarněných znaků
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.7.2006 22:18 Marian Krucina | skóre: 13
Rozbalit Rozbalit vše Re: bash - nastavení proměnné prostředí
Odpovědět | | Sbalit | Link | Blokovat | Admin
[marian@alf ~]$ LANG=abc; echo $LANG
abc
Vojta Drbohlav avatar 24.7.2006 22:26 Vojta Drbohlav | skóre: 26 | blog: Blog | Strahov
Rozbalit Rozbalit vše Re: bash - nastavení proměnné prostředí
Ale timhle tu promennou zmenis na porad ne?
hajma avatar 24.7.2006 22:30 hajma | skóre: 27 | blog: hajma | Říčany
Rozbalit Rozbalit vše Re: bash - nastavení proměnné prostředí
jo, ale to mi pak zůstane nastavený i po provedení příkazu...
21 promarněných znaků
24.7.2006 22:26 e | skóre: 10
Rozbalit Rozbalit vše Re: bash - nastavení proměnné prostředí
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj, taky mi to nefunguje pro to echo. Ale zase kdyz si vytvoris lang.sh:
echo $LANG
a das
LANG=abc ./lang.sh
tak to fungovat bude :-)

ROman
JA RAD PORADM KDYZ VIM vic (hebmilo.cz)
hajma avatar 24.7.2006 22:31 hajma | skóre: 27 | blog: hajma | Říčany
Rozbalit Rozbalit vše Re: bash - nastavení proměnné prostředí
trochu overkill :-)
21 promarněných znaků
24.7.2006 22:43 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: bash - nastavení proměnné prostředí
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tu proměnnou neexpanduje příkaz echo, ale shell sám. Takže (odhlédněme teď od toho, že v bashi je echo builtin) se stane přibližně toto: Takže příkaz echo sice vypíše 'cs_CZ', ale jako hodnotu proměnné LANG dostane 'abc' (což se ale na jeho chování neprojeví). Schválně si zkuste spustit
  LANG=ru_RU.UTF-8 date "+$LANG: %B"
Před dvojtečkou bude sice 'cs_CZ', ale měsíc se vypíše rusky.
hajma avatar 24.7.2006 22:59 hajma | skóre: 27 | blog: hajma | Říčany
Rozbalit Rozbalit vše Re: bash - nastavení proměnné prostředí
aha, takže

LANG=asdf DESTDIR=/home/hajma/tmp/whatistest /usr/sbin/makewhatis

by prostě fungovat mělo (tj. umisťovat whatis do ..../asdf), ale jelikož to soubor whatis vytrvale umisťuje do .../cs_CZ/, tak bych měl chybu hledat spíš v makewhatis? (i když, jak jsem se do toho díval - je to shell skript - tak by se opravdu měl rozhodovat dle $LANG)
21 promarněných znaků
24.7.2006 23:06 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: bash - nastavení proměnné prostředí
Asi bude potřeba podívat se buď do dokumentace k příkazu makewhatis nebo přímo do toho skriptu, podle čeho ten adresář určuje. Není to prostě podle jazykových mutací stránek, které máte nainstalované v systému?
hajma avatar 24.7.2006 23:40 hajma | skóre: 27 | blog: hajma | Říčany
Rozbalit Rozbalit vše Re: bash - nastavení proměnné prostředí
jo, tak někde uprostřed makewhatis se volá nastavení locale, který všechno překope, díky za pomoc, asi to nahlásím jako bug
21 promarněných znaků
25.7.2006 00:05 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: bash - nastavení proměnné prostředí
Nemyslím si, že je to bug. IMHO je naopak správné, že stránky pro cs_CZ se zaindexují do adresáře .../cs_CZ/..., stránky pro de_DE do adresáře .../de_DE/... atd. A to bez ohledu na to, jak máte nastavené locale při spuštění příkazu makewhatis.
hajma avatar 25.7.2006 00:15 hajma | skóre: 27 | blog: hajma | Říčany
Rozbalit Rozbalit vše Re: bash - nastavení proměnné prostředí
to samozřejmě ano, ale když se podíváte do
[hajma@localhost ~]$ cat /etc/cron.weekly/makewhatis-cs.cron
#!/bin/bash
LANG=cs /usr/sbin/makewhatis /usr/share/man/cs
exit 0
[hajma@localhost ~]$
zjistíte, že makewhatis se opravdu má chovat podle proměnné prostředí LANG. Problém to způsobuje třeba při pokusu rebuildnout rpm na stroji s jiným locale.

Ta řádka v makewhatis, která to způsobuje, je "mandriva-specific", v originálním balíčku man se nevyskytuje.
21 promarněných znaků
25.7.2006 00:27 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: bash - nastavení proměnné prostředí
To určitě, já třeba na SuSE 10.1 příkaz makewhatis nemám vůbec (whatis ano). :-)
24.7.2006 23:03 e | skóre: 10
Rozbalit Rozbalit vše Re: bash - nastavení proměnné prostředí
Nebude ;-)
[~]> LANG=C date "+$LANG: %B"                                 (Po 24.07. 23:02)
cs_CZ.UTF-8: červenec
[~]> LC_ALL=C date "+$LANG: %B"                               (Po 24.07. 23:02)
cs_CZ.UTF-8: July
R.
JA RAD PORADM KDYZ VIM vic (hebmilo.cz)
24.7.2006 23:07 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: bash - nastavení proměnné prostředí
A jak máte ve svém shellu nastavené proměnné LC_TIME a LC_ALL?
24.7.2006 23:08 e | skóre: 10
Rozbalit Rozbalit vše Re: bash - nastavení proměnné prostředí
[~]> echo $LC_TIME                                            (Po 24.07. 23:07)

[~]> echo $LC_ALL                                             (Po 24.07. 23:08)
cs_CZ.UTF-8
R.
JA RAD PORADM KDYZ VIM vic (hebmilo.cz)
25.7.2006 00:03 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: bash - nastavení proměnné prostředí
Tak se nedivte a snažte se spíš vnímat obsah toho příspěvku.

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.