Jika Anda perlu menulis beberapa file sementara yang hanya berlangsung selama skrip atau aplikasi Anda berjalan, gunakan direktori yang ditunjukkan oleh TMPDIR
variabel lingkungan, atau jika variabel itu tidak didefinisikan /tmp
,.
/tmp
dihapus saat boot pada beberapa sistem (kadang-kadang bahkan dalam RAM, misalnya secara default pada Solaris, dan pada beberapa instalasi Linux), sehingga tidak dapat digunakan untuk file yang harus selamat dari kegagalan daya atau reboot. /var/tmp
dapat digunakan untuk file yang harus selamat dari reboot, tetapi itu dapat dibersihkan oleh administrator sistem dari waktu ke waktu. Jika aplikasi Anda perlu menyimpan file secara permanen, tulis di suatu tempat di direktori home pengguna (di ~/.programmingnoobsapp
atau ~/.cache/programmingnoobsapp
) atau di bawah /var/lib/programmingnoobsapp
atau /var/cache/programmingnoobsapp
.
Catatan yang /tmp
dibagikan di antara semua pengguna, jadi Anda harus berhati-hati saat membuat file di sana. Anda perlu memilih nama file yang belum ada, dan Anda harus berhati-hati untuk tidak mengizinkan kondisi balapan di mana proses lain membuat file di depan Anda dengan izin yang berbeda, yang bisa menjadi lubang keamanan (jika proses lain berjalan sebagai pengguna yang berbeda, kemudian dapat mengakses dan memodifikasi data proses Anda). Gunakan mktemp
perintah untuk membuat file di /tmp
atau /var/tmp
. Secara default, mktemp
membuat file di $TMPDIR
, atau /tmp
jika TMPDIR
tidak disetel, yang biasanya merupakan tempat yang tepat. Jika Anda perlu menggunakan beberapa file sementara, atau bahkan jika Anda memerlukan satu file saja, saya sarankan membuat direktori untuk semua file sementara Anda denganmktemp -d
dan menghapusnya di akhir skrip Anda.
#!/bin/sh
tmp_root=
trap 'rm -rf "$tmp_root"' EXIT INT TERM HUP
tmp_root=$(mktemp -d)
tmpfile1=$tmp_root/file1
tmpfile2=$tmp_root/file2
…