3

一時ディレクトリを作成してそこにさまざまなファイルを保存し、さまざまな操作を実行するというタスクを完了するために、短い bash スクリプトを作成しました。

最初のパスでは、一時ディレクトリを /tmp/$$.$script に作成しました」が、/tmp/ への書き込みアクセス権を持たないコンピューターでスクリプトをテストしました。私の質問は、この一時ディレクトリの適切なセカンダリ ロケーションはどこですか?現在のディレクトリをそのまま使用する必要がありますか?ホーム ディレクトリ? ~/tmp/?スクリプトの出力場所?

作成されたすべてのファイルは、スクリプトの終了時にクリーンアップされます。

4

5 に答える 5

7

多くのシステムには/var/tmp. システム管理者が への書き込みを望まない場合/tmp、おそらく代替手段が提供されているはずです...$TMPDIR環境変数は設定されていますか? たとえば、私の Mac では次のようになります。

$ echo $TMPDIR
/var/folders/jf/jfu4pjGtGGGkUuuq8HL7UE+++TI/-Tmp-/
于 2008-10-05T20:07:37.843 に答える
5

TMPDIR が設定されていない場合は、~/tmp/ の代わりに ~/.[your script name]/tmp をお勧めします。これは、ユーザーが自分で作成した可能性があるためです (そして、誤ってそこにあるものを上書きしたくない場合があります)。

ちょうど bash で思いついたように --

case $TMPDIR in '') tmp_dir=".${0}/tmp";; *) tmp_dir=$TMPDIR;; esac
于 2008-10-05T20:24:54.500 に答える
4

${TMPDIR:-/tmp} ($TMPDIR または $TMPDIR が設定されていない場合は /tmp) を使用します。それが書き込み可能でない場合は、その旨を示すエラーで終了するか、それを定義する入力をユーザーに求めます。プロセスが強制終了された場合に一時ファイルをどこに置くべきかをユーザーに尋ねることは、どこかを想定してそこに残すよりも望ましいと思います。

于 2008-10-05T20:34:41.703 に答える
2

mktempを使用してみることができます (システムに対して正しく構成されていると仮定します)。

例えば MYTMPDIR=$(mktemp -d)

于 2008-10-05T20:59:38.580 に答える
1

を試すことができますが/var/tmp、それはそれへのシンボリックリンクである可能性が/tmpあります(またはその逆)。

于 2008-10-05T20:07:11.573 に答える