4

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

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

但是,当我获取脚本 ( source setup.source) 时,$path 变量保持不变。如果我将这些行复制粘贴到命令提示符,它们更新 $path。如果我在脚本中添加 'echo' 并再次获取它,则 typeset 命令似乎清除了 $path 变量。

有人介意向我解释发生了什么,以及我该如何解决?

4

2 回答 2

3

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

typeset -gU path

这将防止本地化变量。

于 2012-10-25T00:51:53.043 回答
2

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

http://zsh.sunsite.dk/Contrib/startup/std/zshenv

于 2009-10-01T00:36:24.770 回答