Bagaimana cara menginisialisasi ulang jendela terminal daripada menutupnya dan memulai yang baru?

49

Ketika saya membuat beberapa perubahan pada perilaku shell / bash, seperti mengatur alias, apakah ada perintah cepat untuk menginisialisasi ulang jendela terminal alih-alih menutup dan membuka jendela baru?

NES
sumber

Jawaban:

51

Jika Anda bermaksud memuat ulang konfigurasi .bashrc Anda, maka:

source ~/.bashrc

Untuk kurang mengetik, Anda bisa mengganti sourcedengan titik:. ~/.bashrc

narkisr
sumber
2
Berikut adalah pertanyaan, bagaimana hal ini berperilaku berbeda dari source ~/.bashrc?
crasic
Tidak. Melihat halaman bash man Anda akan melihat bahwa perintah terdaftar sebagai setara.
Carsten Thiel
2
sourcekhusus untuk bash. .lebih standar. Keduanya bekerja sama di bash.
Michael Terry
1
Ini hanya memuat kembali PATH Anda dan beberapa variabel lingkungan. Itu tidak "mengatur ulang" apa pun. Jawaban @ NES adalah yang benar.
Cerin
2
Ini tidak mengatur ulang apa pun, jika Anda memiliki pembaruan untuk PATH Anda sekarang Anda akan memiliki pembaruan lama dan pembaruan baru.
Constantin
39

Beberapa tambahan yang saya temukan di halaman manual dari perintah reset / tset

atur ulang pengaturan terminal

perintah: reset

Tset menginisialisasi terminal. Tset pertama menentukan jenis terminal yang Anda gunakan. Penentuan ini dilakukan sebagai berikut, menggunakan jenis terminal pertama yang ditemukan.

keuntungan tampaknya, bahwa itu independen dari cangkang yang digunakan. juga bekerja dengan ikan di sini.

Jadi untuk menginisialisasi ulang terminal apa saja lakukan-

$ tset

ATAU

$ reset
NES
sumber
Sayangnya ini juga salah. Itu tidak mengatur ulang variabel lingkungan yang ada.
isarandi
9

Opsi tambahan untuk itu exec bashadalah jika Anda mengubah .profile(atau .bash_profile), Anda bisa melakukannya

$ exec bash --login

Itu akan membaca profil Anda lagi juga. Tidak ada ruginya menambahkan -iopsi juga untuk secara eksplisit mengatakan kepada bash bahwa ini adalah shell interaktif, tetapi biasanya dapat mengetahuinya sendiri.

Tony Ledford
sumber
bagi saya ini juga berfungsi tanpa exec
Armen Sanoyan
Sayangnya salah juga. Variabel lingkungan yang telah ditetapkan masih ada dan tidak diatur ulang.
isarandi
6

Anda harus mengganti aplikasi / shell yang sedang berjalan dengan instance baru. Misalnya jika Anda menggunakan bashshell pilihan, ketikkan baris berikut di baris perintah Anda ( $ adalah placeholder untuk awal baris perintah Anda):

> $ exec bash

Aplikasi / shell yang sedang berjalan diganti dengan instance baru bashseperti mulai dari awal. Semua modifikasi Anda sebelumnya hilang.

Catatan: Jangan lupa bahwa aplikasi terminal Anda dapat diprogram ulang. Anda harus mengatur ulang aplikasi terminal Anda secara manual.

Raphael Bossek
sumber
2
Apa yang Anda maksud dengan "diprogram ulang"?
Eliah Kagan
0

shell Anda adalah executable yang bisa Anda panggil. Jadi, jika Anda menggunakan bash, Anda dapat menelepon bashdan jika Anda menggunakan sesuatu yang lain seperti zsh, Anda bisa langsung masukzsh

Rick
sumber
0

Gunakan exec sudo --login --user $USER.

Jika Anda juga ingin perintah yang dimasukkan sebelumnya tidak berfungsi (reset penuh terminal), gabungkan dengan resetasreset; exec sudo --login --user $USER

Ada banyak jawaban di seluruh web tetapi sebagian besar sebenarnya tidak berfungsi. Cara mudah untuk menguji adalah dengan mengatur export SOMEVAR=42lalu menjalankan perintah yang seharusnya diatur ulang dan lakukan echo $SOMEVAR. Jika 42, lingkungan tidak disetel ulang.

Ada juga exec -c bash -latau exec env -i bash -l, tetapi ini rusak, entah bagaimana variabel $ HOME tidak diatur setelah ini.

isarandi
sumber