bee*_*gee 2 linux bash shell environment-variables
我试图找出env,(即用新环境调用一个util).
举个例子,我的环境变量KDEDIRS =/usr在我当前的环境中,让我说我输入:
env -i KDEDIRS=/home/newkdedir env
Run Code Online (Sandbox Code Playgroud)
这按预期输出KDEDIRS =/home/newkdedir.(即用新环境调用第二个env)
现在我想用相同的方式调用say utility echo
env -i KDEDIRS=/home/new_kdedir echo ${KDEDIRS}
Run Code Online (Sandbox Code Playgroud)
这显然不会起作用.shell在回显之前扩展了KDEDIRS.所以输出是/ usr (即当前环境中的值)
然后我尝试间接并输入
env -i KDEDIRS=/home/newkdedir echo ${!KDEDIRS}
Run Code Online (Sandbox Code Playgroud)
这没什么输出.
我可能对此有点困惑但是如何根据新创建的echo环境使shell扩展KDEDIRS变量?
扩展发生在构造env命令行的一部分,该命令行也设置变量.在该命令的执行中没有进行扩展.因此,您必须添加另一个命令行扩展器作为该命令的一部分.例如
env -i KDEDIRS=/home/newkdedir /bin/sh -c 'echo $KDEDIRS'
KDEDIRS=/home/newkdedir eval 'echo $KDEDIRS'
Run Code Online (Sandbox Code Playgroud)
间接与它无关.