我在其中声明的任何变量zshrc
都可以在 shell 中作为环境变量使用。我不希望这种情况发生。
我尝试将变量放在函数中并将它们设置为本地,但随后该函数在zshrc
.
我怎样才能使我的 zshrc 中发生的事情留在我的 zshrc 中?
如果您使用的是最新版本的 zsh,则可以使用匿名函数:
function () {
local xyz=abc
# whatever
}
该函数将被自动执行,然后被丢弃,它仅用于范围界定目的。
这适用于任何源文件,不仅是 zshrc。
它们可用,但不会导出,因此从命令行启动的脚本不会获取这些变量。如果你.zshrc
看起来像
function zshrc()
{
local VAR=1
# Do stuff
}
zshrc
然后你就再也不想启动zshrc
功能了,你可以这样做
unfunction zshrc
然后。
如果您不将单词附加local
到变量中,它将一直保留到您执行以下操作之一:
exec zsh
或exec bash
取决于您的外壳。这只是清除了未分配单词的局部变量local
。method_name(){
a=11
echo $a
}
method_name(){
local a=11
echo $a
}
此变量的范围为函数名称method_name
,并且仅在调用时(而不是之后)在函数内部可用。
local z=11
echo $z
根据您的 shell 和需要,您可以使用.bash_profile
or.bashrc
或.zshrc
等来存储函数和别名。
查看此参考以获取有关环境变量及其各自 shell 的更多信息
另请阅读本文以了解如何使用 shell 扩展在命令行上设置环境变量
env
您可以使用或快速查看环境变量printenv
惯例是使用大写
export A=11
或者 export B="11 is part of this string"
假设您打开了一个新的终端窗口或获取了 .zshrc 或 .bashrc 或您正在使用的任何一个,您现在可以使用此环境变量,直到您关闭终端会话。注意:设置时不要使用$,而引用变量时一定要使用$。
echo "A is equal to: $A and that is pretty nice"
echo "$A"
source ~/path/to/file/filename
source ~/.bash_profile
使用上面的代码,但将其放在您的 ~/.bash_profile 或 ~/.zshrc 或其他相应的文件中。保存文件并获取它。
export B="11 is part of this string"
env
要删除该环境变量,请将其从文件中删除并再次获取该文件。
unset B
注意取消设置时没有$
。
export BLABLA="environment variable set from the command line, saved in file for later use"
检查您要发送到的文件,它可能不会从新行开始,它可能已连接到您的最后一行,该行是其他函数、别名或其他。
这不是一个完全全面的答案,但它是朝着正确方向迈出的一大步。它显示了如何设置、使用和删除终端外壳中的范围。
显然有一个 bash 约定用双下划线命名“私有”函数..当然它们实际上并不是私有的。我在我的 .zshrc 中使用了这个约定。
function __comment()
{
curr=`pwd`
echo "$curr $*"
}
__comment 'Here is a Comment'