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