Shell-Script
zsh 中的局部變數:zsh 中 bash 的“export -n”相當於什麼
我試圖在 zsh 中包含一個 shell 的變數範圍,而不是讓孩子看到它。例如,我在 .zshrc 中鍵入:
GREP_OPTIONS=--color=always
但是,如果我使用以下內容執行 shell 腳本:
#!/bin/bash echo $GREP_OPTIONS
輸出是:
--color=always
雖然我希望它為空(上面的 shell 腳本根本不應該看到 GREP_OPTIONS 變數)。
在 bash 中,可以說:
export -n GREP_OPTIONS=--color=always
,這將防止這種情況發生。如何在 zsh 中完成此操作?
export
在 zsh 中是 的簡寫typeset -gx
,其中屬性g
表示“全域”(相對於函式的局部),屬性x
表示“導出”(即在環境中)。因此:typeset +x GREP_OPTIONS
這也適用於 ksh 和 bash。
如果您
GREP_OPTIONS
一開始就從不導出,則不需要取消導出它。您還可以使用間接的可移植方式:取消設置變數會取消導出它。在 ksh/bash/zsh 中,如果變數是只讀的,這將不起作用。
tmp=$GREP_OPTIONS unset GREP_OPTIONS GREP_OPTIONS=$tmp