TCL检查环境变量

时间:2014-05-06 19:09:08

标签: tcl environment-variables renderman

所以我一直试图找到一个答案,但在互联网上找不到答案。我需要检查环境变量是否存在。我以为我有正确的代码,但它一直都是假的。

if { [info exists ::env(USER)] } {
    RAT::LogMsg INFO "Found USER"
} else {
    RAT::LogMsg INFO "Nope!"
}

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

您可能想要检查实际设置的环境变量;我不认为USER是保证之一。

RAT::LogMsg INFO "Got these env-vars: [lsort [array names ::env]]"

如果puts stdout适用于您的环境,您可以尝试执行以下操作:

parray ::env

parray命令是一个漂亮打印数组的过程。)


要正确获取当前用户名 ,请查看tcl_platform array's user element。该数组由Tcl内部生成(好,通过探测相关的基本OS API),而不是通过查看环境变量,并且该特定元素始终至少存在于Tcl 8.4。

RAT::LogMsg INFO "Username is $::tcl_platform(user)"

我刚刚注意到文档错误:它表示user元素来自USER和/或LOGNAME个环境变量。 It doesn't,并且至少不是8.5和8.6。 (这绝对是我的错误。当我修复它时,我忘了更新代码。哎呀!)

答案 1 :(得分:0)

你有正确的代码,在tclsh中测试:

% if {[info exists ::env(USER)]} {puts "found $::env(USER)"}
found strobel
% 

问题必须出在您的环境中。