在要获取的脚本中更改zsh的$ path变量

时间:2009-07-30 19:33:58

标签: zsh

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

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

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

有人会介意向我解释发生了什么,以及我如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

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

typeset -gU path

这将阻止本地化变量。

答案 1 :(得分:2)

我认为您可能需要使用.zshenv,因为它是在shell的所有调用中获取的。

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