[linux] Re: wtf... regular expressions in awk...

asmuth op bakunin.xs4all.nl asmuth op bakunin.xs4all.nl
Wo Sep 28 09:05:51 CEST 2005


> On Tue, 27 Sep 2005, Kees Theunissen wrote:
>
>>Ter vergelijking dezelfde opdrachten als $LANG niet geset is.
>>De sorteer volgorde van "ls" en "sort" wordt eerst alle uppercase
>>namen, daarna pas lowercase.
>>
>>[kees op ithmar test]$ unset LANG
>>[kees op ithmar test]$ ls
>>AA  BB  CC  DD  aa  bb  cc  dd
>>[kees op ithmar test]$ ls |sort
>>AA
>>BB
>>CC
>>DD
>>aa
>>bb
>>cc
>>dd
>>
>>Bij de pathname expansion van "ls [A-C]*" in bash verandert wel de
>>volgorde van de output, maar "bb" en "cc" blijven in de expansie zitten.
>>Vraag me niet waarom. Is dit een compile time default of zie ik een
>>optie over het hoofd?
>>
>>[kees op ithmar test]$ ls [A-C]*
>>AA  BB  CC  bb  cc
>
> Ik heb nog wat geëxperimenteerd en kom tot de conclusie dat dit gedrag
> van bash op een bug wijst. In een paar zinnen samengevat komt dat gedrag
> neer op het volgende:
>
> 1) Als bash wordt gestart in een environment waarin $LANG, $LC_ALL en/of
> $LC_COLLATE zijn gedefiniëerd en als die variabelen vervolgens 'unset'
> worden, dan zal de filename expansie van bijvoorbeeld [A-C]* worden
> gesorteerd volgens de "C" oftewel de "POSIX" locale. Dat is ook wat je
> verwacht. Maar de INHOUD van die expansie zal overeenkomstig de locale
> zijn die gold bij het starten van bash. Ik heb het hier dus over een
> situatie waarin $LANG $LC_ALL en/of $LC_COLLATE aanvankelijk waren
> geset maar uiteindelijk 'unset' werden. Of er tussendoor met die
> variabelen werd gerommeld (interactief of in een opstart-script) lijkt
> niets uit te maken.
>
> 2) Als bash wordt gestart in een environment waarin $LANG, $LC_ALL en/of
> $LC_COLLATE allen niet zijn gedefiniëerd en als één of meer van die
> variabelen eventueel worden geset maar dan naderhand ook weer worden
> 'unset', dan zal de filename expansie van bijvoorbeeld [A-C]* zich
> gedragen zoals je verwacht: volgens de "C" oftewel de "POSIX" locale.
> Dat geldt zowel voor de inhoud van de expansion als voor de
> sorteervolgorde.
>
> Ik beschouw het gedrag zoals beschreven onder 1) als een bug. Kan
> iemand dat gedrag bevestigen?

Ik zie hier het volgende gedrag:

m043lgp41f# mkdir test
m043lgp41f# cd test
m043lgp41f# touch aa bb cc dd AA BB CC DD
m043lgp41f# ls
aa  AA  bb  BB  cc  CC  dd  DD
m043lgp41f# echo $LANG
en_US.UTF-8
m043lgp41f# ls [A-C]*
AA  bb  BB  cc  CC
m043lgp41f# unset LANG
m043lgp41f# ls [A-C]*
AA  BB  CC
m043lgp41f# set | grep LC
MAILCHECK=60
m043lgp41f# echo $BASH_VERSION
2.05b.0(1)-release
m043lgp41f# cat /etc/redhat-release
Red Hat Enterprise Linux AS release 3 (Taroon Update 3)

Met vriendenlijke groet,


Daniel von Asmuth







More information about the Linux mailing list