2019-11-04

tmp temp houdini_temp_dir

Windows の場合、 Houdini の一時ファイルを書き出す先の指定に

  • HOUDINI_TEMP_DIR
  • TEMP
  • TMP
の3種類の環境変数を使うことができるが、必ずしも想定通りの挙動をしない場合がある。これはそれを説明する。
$HOUDINI_TEMP_DIR も日本語ディレクトリ名を含まないパスに指定されていることが重要。



1. コントロールパネルでの設定

Windows では、 TEMP と TMP は、システムのコントロールパネルで System Variables と User Variables の2通りで設定されている。
Windows 10 でのデフォルトは、

  • System Variables として
    TEMP = C:\WINDOWS\TEMP
    TMP = C:\WINDOWS\TEMP
  • User Variables として
    TEMP = C:\Users\<username>\AppData\Local\Temp
    TMP = C:\Users\<username>\AppData\Local\Temp
となっていて、システム系のプロセスは上のペアを使い、ユーザが実行するものは下のペアを使い、User Variables に設定がある場合、System Variables の値は事実上無視して構わず、 HOUDINI_TEMP_DIR は、デフォルトでは、明示的には指定されていない。

2. Houdini セッションでの設定

この状態で Houdini を起動し、セッション中の環境変数を確認すれば、

HOUDINI_TEMP_DIR = C:\Users\<username>\AppData\Local\Temp\houdini_temp
TEMP = C:\Users\<username>\AppData\Local\Temp\houdini_temp\
TMP = C:\Users\<username>\AppData\Local\Temp
と、コントロールパネルで設定されているのとは異なる値になる。

つまり、Houdini セッション内では、 TEMP と HOUDINI_TEMP_DIR は同じディレクトリを指し、さらに TEMP はコントロールパネルで設定された値とは一致しない。

また、コントロールパネルの User Variables 以下で、他は変更せずに
TEMP = C:\tmp\
とした場合でも、Houdini を起動し、セッション中の環境変数を確認すれば、

HOUDINI_TEMP_DIR = C:\Users\<username>\AppData\Local\Temp\houdini_temp
TEMP = C:\Users\<username>\AppData\Local\Temp\houdini_temp\
TMP = C:\Users\<username>\AppData\Local\Temp
となる。

ここで類推できるのは、 HOUDINI_TEMP_DIR が未定義の場合、

HOUDINI_TEMP_DIR = $TMP + "houdini_tmp/"
TEMP = $HOUDINI_TEMP_DIR
ということになる。

3. 明示的な設定

よって HOUDINI_TEMP_DIR を、例えば、 D:/SideFX/HoudiniFiles/_temp/houdini_temp に設定したい場合、

  1. HOUDINI_TEMP_DIR = D:/SideFX/HoudiniFiles/_temp/houdini_temp/
    コントロールパネルまたは houdini.env 内で明示的に定義するか
  2. HOUDINI_TEMP_DIR を定義せずに
    TMP = D:/SideFX/Houdini/_temp
    とする。

リンク

0 件のコメント:

コメントを投稿