2016-03-28 12 views
1

Bash'de, aşağıdaki işlev, dışa aktarılan ENV değişkenini alt süreçlere aktarırken, aynı adla yerel bir değişken de bildirir. Zsh'da bir eşdeğer var mı?Zsh, Bash'ın "local + x MY_VAR" ile eşdeğer mi?

subshells ve read-only variables kullanmak istemiyorum. Amaç, çocuk işleminin kullandığı bir değişkeni yanlışlıkla geçersiz kılmaktan kaçınmaktır. Çocuk süreçlerinde hangi ENV değişkenlerinin kullanıldığını veya arama işleminden önceden var olduğunu bilmiyorum. Zsh, local +x'da, Bash'deki davranıştan farklı bir davranışı vardır. Zsh, local veya local +x kullanarak değişkeni kaldırıyor gibi görünüyor. (. local +x içinde +x Zsh göz ardı edilir) Bash local +x kullanarak orijinal değişken geçer:

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 

cevap

0

Resim, ZSH böyle bir eşdeğeri yoktur.