mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-02 22:11:54 +02:00
Fix, test and comment unsetting and resetting of special tied parameters
This commit is contained in:
parent
fbe51d3ee9
commit
6ea2dab092
3 changed files with 37 additions and 1 deletions
|
@ -632,7 +632,17 @@ The version number of this zsh.
|
|||
enditem()
|
||||
texinode(Parameters Used By The Shell)()(Parameters Set By The Shell)(Parameters)
|
||||
sect(Parameters Used By The Shell)
|
||||
The following parameters are used by the shell:
|
||||
The following parameters are used by the shell.
|
||||
|
||||
In cases where there are two parameters with an upper- and lowercase
|
||||
form of the same name, such as tt(path) and tt(PATH), the lowercase form
|
||||
is an array and the uppercase form is a scalar with the elements of the
|
||||
array joined together by colons. These are similar to tied parameters
|
||||
created via `tt(typeset -T)'. The normal use for the colon-separated
|
||||
form is for exporting to the environment, while the array form is easier
|
||||
to manipulate within the shell. Note that unsetting either of the pair
|
||||
will unset the other; they retain their special properties when
|
||||
recreated, and recreating one of the pair will recreate the other.
|
||||
|
||||
startitem()
|
||||
vindex(ARGV0)
|
||||
|
|
|
@ -669,6 +669,12 @@ createparam(char *name, int flags)
|
|||
if (oldpm && (oldpm->level == locallevel || !(flags & PM_LOCAL))) {
|
||||
if (!(oldpm->flags & PM_UNSET) || (oldpm->flags & PM_SPECIAL)) {
|
||||
oldpm->flags &= ~PM_UNSET;
|
||||
if ((oldpm->flags & PM_SPECIAL) && oldpm->ename) {
|
||||
Param altpm =
|
||||
(Param) paramtab->getnode(paramtab, oldpm->ename);
|
||||
if (altpm)
|
||||
altpm->flags &= ~PM_UNSET;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
if ((oldpm->flags & PM_RESTRICTED) && isset(RESTRICTED)) {
|
||||
|
|
|
@ -526,3 +526,23 @@
|
|||
>fixed
|
||||
>the
|
||||
>shell
|
||||
|
||||
unset SHLVL
|
||||
(( SHLVL++ ))
|
||||
print $SHLVL
|
||||
0:Unsetting and recreation of numerical special parameters
|
||||
>1
|
||||
|
||||
unset manpath
|
||||
print $+MANPATH
|
||||
manpath=(/here /there)
|
||||
print $MANPATH
|
||||
unset MANPATH
|
||||
print $+manpath
|
||||
MANPATH=/elsewhere:/somewhere
|
||||
print $manpath
|
||||
0:Unsetting and recreation of tied special parameters
|
||||
>0
|
||||
>/here:/there
|
||||
>0
|
||||
>/elsewhere /somewhere
|
||||
|
|
Loading…
Reference in a new issue