$TEMP
とについて聞いたことがありますが、$TMP
すべてのディストリビューションの標準ではないと思います。
私が知っている限り、一時ディレクトリを取得する最良の方法はです/tmp
。そのパスで機能しないディストリビューションはありますか?
ベストアンサー1
$TMPDIR
POSIX規格で述べたように、両方とも標準的です$TEMP
。$TMP
この
/tmp
ディレクトリは、可用性を想定して過去のアプリケーションに対応するために、POSIX.1-2008 に保持されます。実装では、環境変数に適切なディレクトリ名を指定することをお勧めします。TMPDIR
アプリケーションはその内容を使用してTMPDIR
一時ファイルを生成することをお勧めします。
引用:http://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap10.html
少なくともmacOSではデフォルトではに$TMPDIR
設定されていませんが(何らかの理由で)/tmp
まだシンボリックリンクとして使用できます/var/folders/4r/504v61kx02gczk_454db345c0000gn/T/
。/tmp
/private/tmp
tmpdir="${TMPDIR:-/tmp}"
$TMPDIR
たとえば、設定されているかどうかにかかわらず/tmp
(または空白の)スクリプトでこれを使用できます。
非標準mktemp
ユーティリティはデフォルトでファイルまたはディレクトリを生成し、$TMPDIR
その名前を出力します(ただし、macOSでは該当しません、以下を参照)。
tmpfile=$(mktemp)
tmpdir=$(mktemp -d)
mktemp
使用方法については、システムのマニュアルを確認してください。すべての実装が同じというわけではありません。
macOSでは理由のためmktemp
、ユーティリティへの明示的なパスを含むテンプレートを提供する必要があります。
tmpfile=$(mktemp "${TMPDIR:-/tmp}"/tmp.XXXXXXXX)
tmpdir=$(mktemp -d "${TMPDIR:-/tmp}"/tmp.XXXXXXXX)
上記のコマンドは(それぞれ)空であるか、変数が設定されていない場合(その結果はデフォルトでmacOSで設定されている)、一時ファイルとディレクトリを$TMPDIR
生成します。/tmp
$TMPDIR
getconf DARWIN_USER_TEMP_DIR
Cygwinでは$TMPDIR
デフォルトでは設定されていません。
$ echo $TMPDIR
$ echo $TEMP
/tmp
$ echo $TMP
/tmp
代わりに試してみてください${TMPDIR:-${TEMP:-${TMP:-/tmp}}}
。