2013-02-24 664 views
0

我想在tcl文件中运行命令。据Unix examples,我写道:如果我删除EXEC线,没有错误从TCL文件执行linux命令

couldn't execute "export": no such file or directory 
while executing 
"exec export LD_LIBRARY_PATH=/opt/gcc-4.1.2-built/lib64" 

.... 
exec export LD_LIBRARY_PATH=/opt/gcc-4.1.2-built/lib64 
puts $gofile "#!/bin/bash 
.... 

但是我得到这个错误。

+2

exec期望二进制文件的名称。导出是一个shell命令。尝试一些行:exec sh -c“export LD_LIBRARY_PATH =/opt/gcc-4.1.2-built/lib64 ....” – kofemann 2013-02-24 12:56:56

+0

@tigran这不起作用,因为环境变量只能从父项继承到子项。无论sh过程如何处理它的环境,它都不会影响Tcl过程。 – potrzebie 2013-02-25 12:29:09

回答

3

设置环境变量,你不使用exec而是只写全球env关联数组的适当元素(::是“这是一个全局变量”,可以如果你正在写省略顶级脚本):

set ::env(LD_LIBRARY_PATH) "/opt/gcc-4.1.2-built/lib64" 

然后,你可以exec和值将被正确继承:

puts $gofile "#!/bin/bash 
...." 

(我有点惊讶,你是p用这样的多行脚本来分类,但如果它适合你,那很酷。不过,我发现,如果我这样做,通常将事情分成多个文件会更好。它减少了头部划伤和混乱的数量,因为你不会以最小的引用水平引用更多的引用。)