Bagaimana saya bisa membuat tmux menggunakan shell default saya?

155

Pada pengaturan baru, tmux menggunakan bash sebagai ganti default saya (zsh).

Bagaimana saya bisa memaksanya untuk menggunakan zsh?

re5et
sumber
12
menemukannya. Dapat mengatur yang berikut ini di tmux config: set -g default-command / bin / zsh set -g default-shell / bin / zsh
re5et
4
FWIW, Anda tidak perlu mengatur perintah-default jika Anda telah mengatur shell-standar.
Nicholas Riley

Jawaban:

200
set-option -g default-shell /bin/zsh

di ~/.tmux.confatau /etc/tmux.conf. Bekerja di Fedora.

Anda mungkin harus memulai ulang tmux dengan killall tmux; tmux

Alex Hammel
sumber
5
Jika ini tidak berhasil, pastikan Anda memulai kembali tmux. Tampak jelas tetapi butuh satu jam yang baik untuk mencari tahu!
Andy Smith
27
BTW: Restart berarti tmux killall tmux; tmux. Butuh waktu cukup lama untuk mencari tahu.
js-coder
5
Konfigurasi dapat dimuat ulang tanpa membunuh server:bind R source-file ~/.tmux.conf \; display-message " Config reloaded..".
ДМИТРИЙ МАЛИКОВ
14
Atau cukup jalankan tmux source-file ~/.tmux.confdari baris perintah.
Petr Pudlák
12
@ js-coder: untuk lebih bersih membunuh server tmux Anda, saya akan merekomendasikan tmux kill-server.
Chuim
41

Pertama pastikan shell default Anda diatur dengan benar ke zsh melalui menjalankan ini di baris perintah Anda:

chsh -s $(`which zsh`) $USER

Menempatkan folloowing di ~ / .tmux.conf Anda adalah opsi yang lebih kuat untuk semua shell.

set-option -g default-shell $SHELL
DebugXYZ
sumber
1
Tidak perlu mengatur shell pengguna ( chsh -s) karena tmux menawarkan opsi yang terpisah dari itu.
Mahmoud Al-Qudsi
Saya pikir lebih kuat menggunakan variabel $ SHELL. Tapi itu menambah langkah dan kebingungan tambahan jadi saya lebih suka jawaban yang diterima.
DebugXYZ
Ini lebih baik daripada jawaban yang diterima. Zsh saya tidak diinstal di / bin / zsh.
HappyFace
20

Letakkan baris ini di bagian bawah ~/.tmux.conf

set-option -g default-command "reattach-to-user-namespace -l zsh"

Setelah Anda menambahkan itu, bunuh dan mulai ulang server tmux Anda dan semua akan berfungsi.

wyattdanger
sumber
2
Eh, apakah ada indikasi bahwa re5et (OP) ada di Mac, atau apakah program pembungkusnya sudah diinstal?
Chris Johnsen
1
Saya pikir jawaban ini hanya berfungsi untuk Mac OS X
EhevuTov
5
tmux kill-serveradalah perintah untuk mengakhiri semua server tmux
Keith Smiley
1
Meskipun itu bukan jawaban yang diminta OP, saya berakhir di utas ini dan memang saya menggunakan OS X, menggunakan pembungkus ini, dan ini adalah solusi yang saya butuhkan; jadi terima kasih!
Jose Alban
1
bagaimana ini berbeda set-option -g default-shell ? di atas sepertinya tidak bekerja dengan shell Ikan.
Tommy
5

Jika Anda ingin memaksa tmux untuk menggunakan shell yang sama seperti yang ditentukan dalam variabel lingkungan Anda, Anda bisa menggunakan:

# force SHELL ENV variable as shell
set-option -g default-shell ${SHELL}

di ~/.tmux.confatau /etc/tmux.conf.

Untuk mendapatkan perubahan agar benar-benar berlaku, Anda mungkin perlu tmux kill-serverdan kemudian tmuxuntuk me-restart tmux.

mareoraft
sumber
1
Ini adalah satu-satunya jawaban yang bekerja untuk saya (perintah tmux kill-server)
undefined
2

Gunakan chsh(1):

chsh -s /bin/zsh $USER
amphetamachine
sumber
1
saya sudah memiliki set ini, tetapi tmux mengabaikannya.
Ulangi
2

Log-out dan log-in kembali memperbaiki masalah saya. Ketika digaungkan $SHELLmasih /bin/bashtapi setelah log-out itu diubah menjadi/usr/bin/zsh

Patrick Cho
sumber
2

tmux tampaknya menggunakan SHELLvariabel lingkungan, jadi yang berikut harus berfungsi:

SHELL=/usr/bin/zsh tmux

atau

env SHELL=/usr/bin/zsh tmux
kebiru-biruan
sumber
Tidak yakin mengapa ini tidak dipilih. Tampaknya benar: masalah umum adalah menggunakan shell yang berbeda untuk misalnya iTerm tetapi meninggalkan shell login /bin/bashuntuk memastikan tidak ada kerusakan non-iteraktif. ITerm tidak akan mengatur $SHELLke nama shell baru (tidak yakin mengapa), dan inisialisasi bash akan mengaturnya ke shell login jika tidak disetel pada saat startup. tmux kemudian menggunakan nilai ini jika default-shelltidak disetel secara eksplisit.
Sam Brightman
Ya .. mungkin env SHELL=/usr/bin/zsh tmuxlebih baik? (memperbarui jawabannya).
blueyed
1

Tambahkan ini ke dalam ~/.tmux.conf

set -g default-command /usr/local/bin/fish
IanVaughan
sumber
1

Jawaban yang diterima tidak berhasil untuk saya.

Saya harus menulis keduanya

set -g default-shell "/bin/bash"

dan

set -g default-commanmd "/bin/bash"

di ~/.tmux.conf- jangan lupa tmux kill-server; tmux, untuk memuat ulang tmux.conf


Saya menggunakan tmux -V2.6 di bawah Ubuntu 18 di emulator gnome-shell.

Saya juga meningkatkan tmux dengan https://github.com/samoshkin/tmux-config . Lihat itu, sangat keren.

anarchist912
sumber
0

Bagi saya, saya harus mengganti:

default-command "/usr/local/bin/fish"
default-shell "/usr/local/bin/fish"

dengan

set-option -g default-command "/usr/local/bin/fish"
set-option -g default-shell "/usr/local/bin/fish"

masuk .tmux.conf dan jalankan perintahtmux kill-server; tmux

Ali Amin
sumber
Ini adalah duplikat dari jawaban superuser.com/a/1370909/174140 .
174140
@ John Saya sudah menggunakan set-option -gbukan set -g. berbagai versi tmux yang paling mungkin
Ali Amin
setadalah alias untuk set-option.
174140