On Tue, Dec 13, 2022, at 6:38 AM, Emanuele Torre wrote:
> On Tue, Dec 13, 2022 at 03:07:16AM -0500, Lawrence Velázquez wrote:
>> Of course not.  I only meant to demonstrate that "export" always
>> creates global variables, so a function that utilizes "declare -gx"
>> actually behaves more like "export" then your alias does.
>
> This is a little inaccurate.
>
> `export' doesn't always act on the *global* variable, but "declare -g"
> does.
>
> The differences are that:
>  * `declare' (without -g), always acts on variables in the current
>    dynamic scope, and will create a new variable in the current dynamic
>    scope if no variable with the name it was looking for exists.
>
>  * `export' and `readonly' act on the variable they can see, and set
>    their "x"/"r" attribute; they will only create a new variable (in the
>    global scope) if no variable with the name they were looking for
>    exists in any dynamic scope. Just like simple "a=b" assignments.

You're right, thanks for clarifying.  I was thinking exclusively
about the behavior when creating variables.

-- 
vq

Reply via email to