改变zsh';要源代码的脚本中的s$path变量
我继承了一个zsh脚本,它为一些模拟设置了一组环境变量。它希望编辑$path变量,以便可以找到一些perl脚本:改变zsh';要源代码的脚本中的s$path变量,zsh,Zsh,我继承了一个zsh脚本,它为一些模拟设置了一组环境变量。它希望编辑$path变量,以便可以找到一些perl脚本: typeset -U path path=( ${SIMENV_BIN} $path ) 但是,当我编写脚本源代码(source setup.source)时,$path变量保持不变。如果我将这些行复制粘贴到命令提示符,它们将更新$path。如果我在脚本中添加'echo's并再次对其进行源代码转换,那么typeset命令似乎会清除$path变量 有人能给我解释一下发生了什么事,我怎
typeset -U path
path=( ${SIMENV_BIN} $path )
但是,当我编写脚本源代码(source setup.source
)时,$path变量保持不变。如果我将这些行复制粘贴到命令提示符,它们将更新$path。如果我在脚本中添加'echo's并再次对其进行源代码转换,那么typeset命令似乎会清除$path变量
有人能给我解释一下发生了什么事,我怎样才能解决它吗 我认为您可能需要使用.zshenv,因为它源于shell的所有调用
默认情况下,typeset命令使用当前函数本地提供的名称创建一个新变量,因此当函数返回时,对该变量的更改将丢失。添加
-g
选项:
typeset -gU path
这将阻止变量本地化