Saya telah melihat sekeliling dan menggigit jawaban untuk pertanyaan ini, tetapi sepertinya saya tidak menemukannya (yang aneh).
Pertanyaan saya adalah, adakah cara sederhana untuk memulai kembali sesi bash dari dalam terminal di mac. Saya hanya ingin perilaku yang sama seperti jika saya menutup aplikasi terminal dan mulai lagi (semua variabel reset, .bash_profile bersumber dll).
Saya tahu cara mencari .bash_profile, tapi bukan itu yang saya inginkan. Salah satu alasan saya ingin melakukan ini adalah karena sebuah plugin untuk bash prompt saya memiliki kode yang mencegah warna dimuat beberapa kali. Oleh karena itu, sumber .bash_profile tidak memuat ulang variabel warna dan saya harus memulai ulang aplikasi terminal untuk mendapatkan perubahan yang berlaku.
exec bash
hanya restart shell interaktif itu? Juga, dapatkah Anda menjelaskan dengan tepat apa yang dilakukan oleh perintah exec dan opsinya? Terima kasih!man bash
, cari instance terakhir dari string SHELL BUILTIN COMMANDS dan kemudian gulir ke bawah ke exec. Singkatnya, melewati-c
bendera akan menjalankannya tanpa variabel lingkungan (yang mungkin diperlukan untuk tujuan Anda, saya tidak tahu), dan argumen lain -l dan -a mungkin bukan hal yang Anda inginkan (mereka tampaknya historis / fitur tidak jelas dan spesifik). Anda juga dapat menggunakan exec untuk membuka deskriptor file baru di shell saat ini, jika Anda meninggalkan perintah.-l
di sini ada argumen untuk bash dan membuatnya berperilaku seperti shell login. Membuka deskriptor file di shell saat ini tidak ada hubungannya dengan pertanyaan Anda, tetapi Anda dapat menggunakanexec 4<>test.txt
misalnya untuk membuat deskriptor file 4 poin ke test.txt. Kemudian di sisa shell Anda dapat Anda lakukanecho test>&4
untuk output ke test.txt.Jawaban yang diterima bagus untuk shell yang menggunakan bash, yang juga apa yang diminta OP, namun, saya menggunakan Terminal pada macOS dengan shell non-default (zsh) dan menjalankan perintah
exec bash
jelas tidak memiliki efek yang diinginkan : meluncurkan bash, bukan shell default saya.Jadi perintah environment-agnostic adalah
exec $SHELL
yang menggunakan variabel environment$SHELL
yang menyimpan shell default untuk pengguna.Juga, perhatikan bahwa Apple akan mengganti bash dengan zsh di macOS Catalina sehingga untuk mendapatkan efek OP sedang mencari untuk menjalankan
exec zsh
atauexec $SHELL
akan menjadi cara untuk pergi setelah memperbarui ke macOS 10.15.sumber