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

Kees Theunissen theuniss op rijnh.nl
Wo Sep 28 03:07:30 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?


Groeten,

Kees.

-- 
Kees Theunissen
F.O.M.-Instituut voor Plasmafysica "Rijnhuizen", Nieuwegein
E-mail: theuniss op rijnh.nl,     Tel: 030-6096724,     Fax: 030-6031204




More information about the Linux mailing list