【发布时间】:2010-01-09 18:32:53
【问题描述】:
我试图找出 env,(即用新环境调用 util)。
作为一个例子,我当前环境中的环境变量 KDEDIRS = /usr 假设我输入:
env -i KDEDIRS=/home/newkdedir env
这会按预期输出 KDEDIRS=/home/newkdedir。 (即用新环境调用第二个环境)
现在我想用同样的方式调用说实用程序 echo
env -i KDEDIRS=/home/new_kdedir echo ${KDEDIRS}
这显然行不通。 shell 在回显之前扩展 KDEDIRS。所以输出是/usr (即当前环境中的值)
然后我尝试间接并输入
env -i KDEDIRS=/home/newkdedir echo ${!KDEDIRS}
这什么也不输出。
我可能对此有点困惑,但我怎样才能根据新创建的 echo 环境使 shell 扩展该 KDEDIRS 变量?
【问题讨论】:
-
请注意,'-i' 选项意味着执行的命令不会设置任何环境变量,除了 KDEDIRS - 所以它不会找到不在默认 PATH 上的程序(或内置在 shell 中)等。
标签: linux bash shell environment-variables