一時パスを取得する一般的な方法は何ですか?

一時パスを取得する一般的な方法は何ですか?

$TEMPとについて聞いたことがありますが、$TMPすべてのディストリビューションの標準ではないと思います。

私が知っている限り、一時ディレクトリを取得する最良の方法はです/tmp。そのパスで機​​能しないディストリビューションはありますか?

ベストアンサー1

$TMPDIRPOSIX規格で述べたように、両方とも標準的です$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$TMPDIRgetconf DARWIN_USER_TEMP_DIR


Cygwinでは$TMPDIRデフォルトでは設定されていません。

$ echo $TMPDIR


$ echo $TEMP
/tmp

$ echo $TMP
/tmp

代わりに試してみてください${TMPDIR:-${TEMP:-${TMP:-/tmp}}}

おすすめ記事