5

そのため、私はこれに対する答えを少し見つけようとしてきましたが、インターネット上で答えを見つけることができませんでした. 環境変数が存在するかどうかを確認する必要があります。私は正しいコードを持っていると思っていましたが、false を返し続けます。

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

何か案は?

4

2 に答える 2

7

実際に設定されている環境変数を確認したい場合があります。USERそれは保証されたものの1つではないと思います。

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

puts stdoutお使いの環境で動作する場合は、次のことを試すことができます。

parray ::env

(parrayコマンドは、配列をきれいに印刷する手順です。)


現在のユーザー名を確実に取得するには、tcl_platform配列のuser要素を確認してください。その配列は、環境変数を調べるのではなく、Tcl によって (関連する基本的な OS API へのプローブを使用して) 内部的に生成され、その特定の要素は、少なくとも Tcl 8.4 までは常に存在します。

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

ドキュメンテーションが間違っていることに気付きました:user要素がUSERおよび/またはLOGNAME環境変数に由来すると書かれています。そうではなく、少なくとも 8.5 と 8.6 ではそうではありません。(間違いなく私のミスです。これを修正したときにコードを更新するのを忘れていました。おっと!)

于 2014-05-06T21:42:19.070 に答える