そのため、私はこれに対する答えを少し見つけようとしてきましたが、インターネット上で答えを見つけることができませんでした. 環境変数が存在するかどうかを確認する必要があります。私は正しいコードを持っていると思っていましたが、false を返し続けます。
if { [info exists ::env(USER)] } {
RAT::LogMsg INFO "Found USER"
} else {
RAT::LogMsg INFO "Nope!"
}
何か案は?
そのため、私はこれに対する答えを少し見つけようとしてきましたが、インターネット上で答えを見つけることができませんでした. 環境変数が存在するかどうかを確認する必要があります。私は正しいコードを持っていると思っていましたが、false を返し続けます。
if { [info exists ::env(USER)] } {
RAT::LogMsg INFO "Found USER"
} else {
RAT::LogMsg INFO "Nope!"
}
何か案は?
実際に設定されている環境変数を確認したい場合があります。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 ではそうではありません。(間違いなく私のミスです。これを修正したときにコードを更新するのを忘れていました。おっと!)