Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: f() { local -ar path=(/bin); };f gives an error



> On 11/27/2017 03:17 PM, Stephane Chazelas wrote:
>>
>> The issue here is that when you're trying to make $path (the
>> special array variable tied to $PATH) readonly (with a value)
>> locally in a function, that doesn't work.

Something a little weird happens with order-of-operations for tied parameters:

f() { local -ar path; PATH=foo; echo $path }

Note there's no error there, $path is changed by the assignment to
$PATH even though the array is read-only.  The reverse also works; you
have to make both parameters read-only to prevent changing either one
by assignment to the other.

f() { path=(/bin); local -r path PATH; ... }  # achieves the desired effect



Messages sorted by: Reverse Date, Date, Thread, Author