Saya ingin tahu cara menghapus semua variabel yang saya definisikan di command prompt tanpa menutup terminal?
misalnya, jika saya menetapkan variabel pada command prompt sebagai:
$ a=1
sekarang saya ingin menghapus variabel $a
(dan banyak variabel lain yang didefinisikan dengan cara yang sama) tanpa menutup terminal. Saya bisa menggunakan unset
tetapi akan menjadi sibuk jika tidak ada yang besar. variabel
shell
environment-variables
Edward Torvalds
sumber
sumber
exec "$0"
mungkin - tetapi sulit untuk mengatakan apa yang Anda maksud dengan global .$var
denganvar=$(declare -p +F);
kemudian meneruskannya sebagai argumen ke fungsi yangecho "${2%%=*}".
menjawabnya. Ada beberapa masalah dengan ukuran belaka - tetapi itu akan berfungsi jika lingkungan Anda tidak besar.Jawaban:
Jika Anda melakukannya (GNU coreutils)
Anda akan menggunakan lingkungan yang baru & segar
sumber
exec "$0"
?$0
adalah argumen nol ke shell yang dieksekusi. Jadi, jika Anda menjalankanbash
$0
adalahbash
(mungkin - mungkin-bash
dalam-l
kasus ogin shell tergantung pada versi) . Jika Anda menjalankan skrip dengan#!/bin/bash
bangline,$0
adalah jalur menuju skrip.exec "$0"
mungkin lebih fleksibel, tetapiexec bash
lebih eksplisit. Jika Anda memasukkan perintah itu di terminal,bash
harus mengenali itu dalam lingkungan interaktif dan melakukan yang setarabash -i
- yang akan~/.bashrc
menjalankan file Anda juga.export a=123
, variabel itu diwarisi ...Anda dapat menggunakan
env
, yang disediakan oleh GNU coreutils (biasanya sudah diinstal pada sistem GNU / Linux):exec env --ignore-environment /bin/bash
Panggilan sistem exec adalah agar proses Anda saat ini digantikan di tempat oleh versi baru dari shell yang kurang ramah lingkungan.
Ini bermanfaat untuk juga menghapus variabel lingkungan yang diekspor .
sumber
export PATH=$PATH:~/foo
, kan?