Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
改变zsh';要源代码的脚本中的s$path变量_Zsh - Fatal编程技术网

改变zsh';要源代码的脚本中的s$path变量

改变zsh';要源代码的脚本中的s$path变量,zsh,Zsh,我继承了一个zsh脚本,它为一些模拟设置了一组环境变量。它希望编辑$path变量,以便可以找到一些perl脚本: typeset -U path path=( ${SIMENV_BIN} $path ) 但是,当我编写脚本源代码(source setup.source)时,$path变量保持不变。如果我将这些行复制粘贴到命令提示符,它们将更新$path。如果我在脚本中添加'echo's并再次对其进行源代码转换,那么typeset命令似乎会清除$path变量 有人能给我解释一下发生了什么事,我怎

我继承了一个zsh脚本,它为一些模拟设置了一组环境变量。它希望编辑$path变量,以便可以找到一些perl脚本:

typeset -U path
path=( ${SIMENV_BIN} $path )
但是,当我编写脚本源代码(
source setup.source
)时,$path变量保持不变。如果我将这些行复制粘贴到命令提示符,它们将更新$path。如果我在脚本中添加'echo's并再次对其进行源代码转换,那么typeset命令似乎会清除$path变量


有人能给我解释一下发生了什么事,我怎样才能解决它吗

我认为您可能需要使用.zshenv,因为它源于shell的所有调用


默认情况下,typeset命令使用当前函数本地提供的名称创建一个新变量,因此当函数返回时,对该变量的更改将丢失。添加
-g
选项:

typeset -gU path
这将阻止变量本地化