2016-03-28 10 views
1

Im Beispiel unten habe ich eine exportierte Variable. Der Name wird als Local in einer Funktion wiederverwendet. In der Funktion befindet sich ein untergeordneter Prozess, der die ENV-Variable mit demselben Namen verwendet.Was ist das erwartete Verhalten von "local + x" in einer Funktion mit einer exportierten Variablen in zsh vs bash?

Bash wieder verwendet den ursprünglichen Wert exportiert, während zsh die Variable führt zum Löschen:

function the_func { 
    local +x MY_VAR="new value" 
    my -child -process # === in zsh: $MY_VAR is undefined 
         # === in bash: $MY_VAR="original" 
} 

export MY_VAR="original" 
the_func 

Ist das ein Fehler in zsh oder in Bash? Oder nur kleine Unterschiede zwischen den beiden?

Antwort