Saya sering menjadi penjawab di situs T&J populer yang berfokus pada Unix, dan dalam banyak jawaban saya, saya memberikan contoh menggunakan bash
kerang. Namun, setiap kali saya melakukan ini, saya harus secara manual melalui proses menciptakan lingkungan yang bersih untuk memastikan bahwa setiap langkah diperhitungkan dan didokumentasikan. Bagaimana saya bisa membuat proses ini lebih mudah? Saya idealnya ingin mengetik satu perintah dan mendapatkan lingkungan yang bersih, dan menghapus semua jejak lingkungan sementara itu setelah saya selesai.
Jawaban yang Diterima:
Saya pribadi menggunakan bash
berikut fungsi untuk melakukan ini:
so() {
local tmpdir="$(mktemp -d)"
local tmprc="$(mktemp)"
cat > "$tmprc" << EOF
PS1='\$ '
cd "$tmpdir"
EOF
env - HOME="$HOME" TERM="$TERM" bash --rcfile "$tmprc"
rm -rf "$tmpdir" "$tmprc"
}
Inilah fungsinya, secara berurutan:
- Buat direktori sementara (untuk digunakan sebagai direktori kerja kami di lingkungan yang bersih);
- Buat file sementara (untuk digunakan sebagai
bash
kami) rc file); - Dalam file rc, tambahkan baris yang:
- Setel
PS1
prompt ke terminator prompt diikuti dengan spasi, yang membuatnya tetap relevan jika kita ingin memiliki salinan output kita di situs T&J; - Ubah ke direktori sementara yang kita buat.
- Setel
- Aktifkan instance baru
bash
, yang:- Awalnya memiliki lingkungan kosong kecuali untuk
$HOME
dan$TERM
(env - ...
); - Membaca file rc-nya dari file sementara yang kita buat sebelumnya (
--rcfile
).
- Awalnya memiliki lingkungan kosong kecuali untuk
- Setelah bash keluar, hapus file sementara yang kita buat.
Jelas ini tidak sepenuhnya sangat mudah, yaitu, Anda masih dapat mengakses bagian lain dari sistem Anda. Namun, ini menyediakan lingkungan sementara yang bersih yang dapat Anda gunakan untuk pengujian.