bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Warn upon "declare -ax"


From: Kerin Millar
Subject: Re: Warn upon "declare -ax"
Date: Tue, 5 Sep 2023 16:46:31 +0100

On Tue, 5 Sep 2023 16:04:50 +0200
alex xmb ratchev <fxmbsw7@gmail.com> wrote:

> On Mon, Sep 4, 2023, 15:19 Kerin Millar <kfm@plushkava.net> wrote:
> 
> > On Mon, 4 Sep 2023 14:46:08 +0200
> > Léa Gris <lea.gris@noiraude.net> wrote:
> >
> > > Le 04/09/2023 à 14:18, Dan Jacobson écrivait :
> > > > Shouldn't "declare -ax" print a warning that it is useless?
> > >
> > > There don's seem to be any warning system in Bash or other shells. As
> > > long as it is not a fatal error condition and errexit is not set,
> > > execution continue.
> > >
> > > There are static analysis tools like Shellcheck which might be expanded
> > > to ware of such incompatible flags but that's it.
> >
> > Curiously, ARRAY_EXPORT can be defined in config-top.h. It's probably safe
> > to say that nobody uses it (nor should anybody wish to upon realising how
> > it works).
> >
> 
> does it make too big copies or wha ..

My pet name for it is arrayshock.

$ arr=(foo bar baz)
$ export arr
$ env | grep ^BASH_ARRAY_
BASH_ARRAY_arr%%=([0]="foo" [1]="bar" [2]="baz")
$ ./bash -c 'declare -p arr'
declare -ax arr=([0]="foo" [1]="bar" [2]="baz")

It's not particularly reliable. The following is to be expected because the 
prospective environment ends up being too large.

$ arr=({1..100000}); /bin/true
bash: /bin/true: Argument list too long

However, emptying the array does not remedy the situation (unsetting does).

$ arr=(); /bin/true
bash: /bin/true: Argument list too long

-- 
Kerin Millar



reply via email to

[Prev in Thread] Current Thread [Next in Thread]