在一个将被源化的脚本中修改zsh的$path变量

4

我继承了一个zsh脚本,用于设置一些模拟的环境变量。它想要编辑$path变量,以便可以找到一些perl脚本:

typeset -U path
path=( ${SIMENV_BIN} $path )

然而,当我执行脚本 (source setup.source) 后,$path 变量仍然保持不变。如果我将这些行复制粘贴到命令提示符中,则会更新 $path 变量。如果我在脚本中添加 'echo' 命令并再次执行,typeset 命令似乎会清除 $path 变量。

请问有人可以解释一下发生了什么,并告诉我如何解决吗?

2个回答

3

默认情况下,typeset命令会创建一个以提供的名称命名的新变量,该变量仅限于当前函数的局部作用域内,因此对该变量的更改将在函数返回时丢失。 添加-g选项:

typeset -gU path

这将防止变量本地化。

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接