Tmux'un varsayılan kabuğumu nasıl kullanmasını sağlayabilirim?


155

Yeni bir kurulumda, tmux benim varsayılan (zsh) yerine bash kullanıyor.

Zsh kullanmaya nasıl zorlayabilirim?


12
anladım. Aşağıdaki ayarlayabilir miyim tmux yapılandırma: Varsayılan-komuta / bin / zsh default-kabuk / bin / zsh -g set -g set
re5et

4
FWIW, varsayılan kabuğu ayarladıysanız varsayılan komutu ayarlamanıza gerek yoktur.
Nicholas Riley

Yanıtlar:


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

içinde ~/.tmux.confya /etc/tmux.conf. Fedora'da çalışıyor.

İle tmux’u yeniden başlatmanız gerekebilir. killall tmux; tmux


5
Bu sizin için işe yaramazsa, yeniden başlattığınızdan emin olun tmux. Görünüşe göre bariz ama beni bulmak için iyi bir saat sürdü!
Andy Smith

27
BTW: tmux'un yeniden başlatılması demek killall tmux; tmux. Anlamak için oldukça zaman aldı.
js kodlayıcı

5
Bir sunucu bind R source-file ~/.tmux.conf \; display-message " Config reloaded..".
öldürmeden yapılandırmalar

14
Veya sadece tmux source-file ~/.tmux.confkomut satırından çalıştırın .
Petr Pudlák

12
@ js-coder: tmux sunucunuzu daha temiz bir şekilde öldürmek için tmux kill-serverbunun yerine tavsiye ederim .
Chuim

41

Öncelikle, varsayılan kabuğunuzun, komut satırınızda bunu çalıştırarak zsh'ye doğru ayarlandığından emin olun:

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

Aşağıdakini ~ / .tmux.conf dosyasına yerleştirmek, herhangi bir kabuk için daha sağlam bir seçenektir.

set-option -g default-shell $SHELL

1
chsh -sTmux bundan bağımsız bir seçenek sunarken, user shell ( ) ' yi ayarlamak gereksizdir .
Mahmud Al-Qudsi

$ SHELL değişkenini kullanmanın daha sağlam olduğunu düşündüm. Ancak, fazladan bir adım ve karışıklık ekliyor, bu yüzden kabul edilen cevabı tercih ediyorum.
DebugXYZ

Bu kabul edilen cevaptan daha iyidir. Benim zsh / bin / zsh içinde yüklü değil.
HappyFace

20

Bu satırı, ~/.tmux.conf

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

Bunu ekledikten sonra, tmux sunucunuzu kapatın ve yeniden başlatın; hepsi çalışmalıdır.


2
Er, re5et'in (OP) bir Mac üzerinde olduğuna veya bu sarmalayıcı programın kurulu olduğuna dair herhangi bir belirti var mı?
Chris Johnsen

1
Bence bu cevap sadece Mac OS X için işe yarıyor
EhevuTov

5
tmux kill-servertmux sunucularını sonlandırma komutudur
Keith Smiley,

1
OP'nin istediği cevap olmasa da, bu konuyu bitirdim ve gerçekten de bu sargısını kullanarak OS X'leyim ve bu benim ihtiyacım olan çözüm; çok teşekkür ederim!
Jose Alban

1
bu ne kadar farklı set-option -g default-shell ? Yukarıdaki balık kabuğu ile çalışmak gibi görünmüyor.
Tommy,

5

Tmux’u ortam değişkeninizde belirtildiği şekilde aynı kabuğu kullanmaya zorlamak istiyorsanız, şunları kullanabilirsiniz:

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

senin içinde ~/.tmux.confveya /etc/tmux.conf.

Aslında etkili olması için değişiklik almak için, gerekebilir tmux kill-serverve daha sonra tmuxtmux yeniden başlatmak için.


1
Bu benim için çalışan tek cevap (tmux kill-server komutu)
undefined

2

Kullanım chsh(1):

chsh -s /bin/zsh $USER

1
Ben zaten bu set vardı ama tmux görmezden geliyordu.
re

2

Çıkış yapıp tekrar giriş yapmam sorunu çözdü. Yankılı $SHELLiken hala oldu /bin/bashama oturumu kapattıktan sonra/usr/bin/zsh


2

tmux SHELLortam değişkenini kullanıyor gibi görünüyor , bu nedenle aşağıdakiler işe yaramalı :

SHELL=/usr/bin/zsh tmux

veya

env SHELL=/usr/bin/zsh tmux

Bu neden oy kullandı bilmiyorum. Doğru görünüyor: örneğin iTerm için farklı bir kabuk kullanıyor, ancak /bin/bashyinelemeyen kırılmayan hiçbir şey yapmamak için oturum açma kabuğunu terk ediyor. iTerm $SHELL, yeni kabuk adına ayarlanmayacak (neden olduğundan emin değil) ve başlangıçta ayarlanmadıysa bash başlatma işlemi, giriş kabuğu olarak ayarlayacaktır. default-shellAçıkça ayarlanmadıysa, tmux bu değeri kullanır .
Sam Brightman,

Evet .. belki env SHELL=/usr/bin/zsh tmuxdaha iyi? (cevap güncellendi).
blueyed

1

Bunu içine ekle ~/.tmux.conf

set -g default-command /usr/local/bin/fish

1

Kabul edilen cevap benim için işe yaramadı.

İkisini de yazmak zorunda kaldım

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

ve

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

içinde ~/.tmux.conf- tmux kill-server; tmuxtmux.conf dosyasını yeniden yüklemeyi unutma


tmux -VGNOME kabuğu emülatöründe Ubuntu 18 altında 2.6 kullanıyorum .

Ayrıca https://github.com/samoshkin/tmux-config ile tmux’u geliştirdim . Şuna bir bak, gerçekten harika.


0

Benim için değiştirmek zorunda kaldım:

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

ile

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

giriş .tmux.conf ve çalıştır komututmux kill-server; tmux


Bu, superuser.com/a/1370909/174140 numaralı yanıtın bir kopyasıdır .
174140

@john set-option -gyerine kullandım set -g. muhtemelen tmux’un farklı sürümleri
Ali Amin

setbir takma addır set-option.
174140
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.