[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