Jawaban:
Tampaknya Anda dapat mengawali skrip env -i
yang akan membersihkan lingkungan sebelum menjalankan skrip:
env -i sh test.sh
Dari man env
:
-i, --ignore-environment
start with an empty environment
Tidak yakin mengapa Anda ingin melakukan ini ...
chsh ...
. Jika saya hanya membuka jendela terminal dan menjalankan zsh
atau fish
(dengan atau tanpa -l
tidak masalah) itu mencemari lingkungan saya dengan semua jenis variabel dari shell saya memulainya Melakukan trik dengan env -c
memecahkan masalah ini untuk saya env -i TERM=xterm-256color $(which fish)
..
Satu kemungkinan (meskipun terlihat agak jelek):
exec -c $SCRIPT
akan mulai $ SCRIPT dengan lingkungan kosong. (lihat man bash
pencarian exec \[-cl\]
).
Sejauh yang saya tahu, jawabannya adalah "Tidak". Anda dapat mengganti variabel lingkungan dalam skrip itu sendiri. Nilai variabel lingkungan harus beralih kembali ke nilai aslinya setelah skrip selesai berjalan. Anda mungkin perlu menjalankan skrip sebagai proses anak-anak: $ this.script.sh & untuk menghindari keharusan keluar dari shell Anda sekali saja menjalankan skrip untuk mereset variabel lingkungan Anda ke nilai aslinya.
Edit:
Dari poster sebelumnya, sepertinya saya salah tentang hal itu tidak mungkin.