ฉันจะทำให้ tmux ใช้เชลล์เริ่มต้นได้อย่างไร


155

ในการตั้งค่าใหม่ tmux ใช้ทุบตีแทนค่าเริ่มต้นของฉัน (zsh)

ฉันจะบังคับให้ใช้ zsh ได้อย่างไร


12
คิดออก สามารถตั้งค่าต่อไปนี้ในการกำหนดค่า tmux: set -g default-command / bin / zsh set -g default-shell / bin / zsh
re5et

4
FWIW คุณไม่จำเป็นต้องตั้งค่าคำสั่งเริ่มต้นหากคุณตั้งค่าเปลือกเริ่มต้น
Nicholas Riley

คำตอบ:


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

ในหรือ~/.tmux.conf /etc/tmux.confทำงานกับ Fedora

คุณอาจต้องรีสตาร์ท tmux ด้วย killall tmux; tmux


5
tmuxหากยังไม่ได้ผลสำหรับคุณแล้วให้แน่ใจว่าคุณได้เริ่มต้นใหม่ ดูเหมือนจะเห็นได้ชัด แต่เอาฉันเป็นชั่วโมงที่ดีในการคิดออก!
Andy Smith

27
BTW: killall tmux; tmuxรีสตาร์ทวิธี เอาฉันไปซักพักนึง
js-coder

5
Configs สามารถทำการโหลดซ้ำได้โดยไม่ต้องฆ่าเซิร์ฟเวอร์:bind R source-file ~/.tmux.conf \; display-message " Config reloaded..".
ДМИТРИЙМАЛИКОВ

14
หรือเพียงเรียกใช้tmux source-file ~/.tmux.confจากบรรทัดคำสั่ง
Petr Pudlák

12
@ js-coder: เพื่อฆ่าเซิร์ฟเวอร์ tmux ของคุณให้สะอาดยิ่งขึ้นฉันอยากจะแนะนำtmux kill-serverแทน
Chuim

41

ขั้นแรกให้แน่ใจว่าเชลล์เริ่มต้นของคุณตั้งค่าอย่างถูกต้องเป็น zsh ผ่านการรันในบรรทัดคำสั่งของคุณ:

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

การวาง folloowing ใน~ / .tmux.confเป็นตัวเลือกที่แข็งแกร่งกว่าสำหรับเชลล์ใด ๆ

set-option -g default-shell $SHELL

1
ไม่จำเป็นต้องตั้งค่า user เชลล์ ( chsh -s) เนื่องจาก tmux เสนอทางเลือกโดยอิสระ
Mahmoud Al-Qudsi

ฉันคิดว่ามันแข็งแกร่งกว่าการใช้ตัวแปร $ SHELL แต่มันเพิ่มขั้นตอนพิเศษและความสับสนดังนั้นฉันชอบคำตอบที่ยอมรับได้
DebugXYZ

นี่คือคำตอบที่ดีกว่า zsh ของฉันไม่ได้ติดตั้งใน / bin / zsh
HappyFace

20

วางบรรทัดนี้ที่ด้านล่างของคุณ ~/.tmux.conf

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

หลังจากคุณเพิ่มแล้วให้ฆ่าและรีสตาร์ทเซิร์ฟเวอร์ tmux ของคุณและทุกอย่างจะทำงานได้


2
เอ่อมีข้อบ่งชี้ว่า re5et (OP) อยู่ใน Mac หรือติดตั้งโปรแกรม wrapper นั้นหรือไม่?
Chris Johnsen

1
ฉันคิดว่าคำตอบนี้ใช้ได้เฉพาะกับ Mac OS X
EhevuTov

5
tmux kill-serverเป็นคำสั่งให้วางเซิร์ฟเวอร์ tmux ทั้งหมด
Keith Smiley

1
แม้ว่ามันจะไม่ใช่คำตอบที่ OP ถาม แต่ฉันก็ลงเอยในหัวข้อนี้และแน่นอนว่าฉันอยู่บน OS X โดยใช้ wrapper นี้และนี่คือทางออกที่ฉันต้องการ ขอบคุณมาก!
Jose Alban

1
สิ่งนี้แตกต่างจากset-option -g default-shell อย่างไร ดูเหมือนว่าข้างต้นจะไม่ทำงานกับเปลือกปลา
Tommy

5

หากคุณต้องการบังคับให้ tmux ใช้เชลล์เดียวกันตามที่ระบุในตัวแปรสภาวะแวดล้อมของคุณคุณสามารถใช้:

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

ในของคุณหรือ~/.tmux.conf/etc/tmux.conf

ที่จะได้รับการเปลี่ยนแปลงที่จะมีผลบังคับใช้จริงคุณอาจจะต้องtmux kill-serverแล้วtmuxที่จะเริ่มต้นใหม่ tmux


1
นี่เป็นคำตอบเดียวที่ทำงานสำหรับฉัน (คำสั่ง tmux kill-server)
ไม่ได้กำหนด


2

การออกจากระบบและการลงชื่อเข้าใช้แก้ไขปัญหาของฉันอีกครั้ง เมื่อ echoed $SHELLมันยังอยู่/bin/bashแต่หลังจากออกจากระบบมันก็เปลี่ยนเป็น/usr/bin/zsh


2

tmux ดูเหมือนจะใช้SHELLตัวแปรสภาวะแวดล้อมดังนั้นสิ่งต่อไปนี้ควรใช้ได้:

SHELL=/usr/bin/zsh tmux

หรือ

env SHELL=/usr/bin/zsh tmux

ไม่แน่ใจว่าทำไมสิ่งนี้ถึงถูกโหวต ดูเหมือนว่าจะถูกต้อง: ปัญหาที่พบบ่อยคือการใช้เชลล์ที่แตกต่างกันเช่น iTerm แต่ปล่อยให้ล็อกอินเชลล์/bin/bashเพื่อให้แน่ใจว่าไม่มีการหยุดพักที่ไม่ทำซ้ำ iTerm จะไม่ตั้งค่า$SHELLชื่อเชลล์ใหม่ (ไม่แน่ใจว่าทำไม) และ bash initialisation จะตั้งเป็นเชลล์ล็อกอินหากไม่ได้ตั้งค่าเมื่อเริ่มต้น tmux จะใช้ค่านี้หากdefault-shellไม่ได้ตั้งค่าไว้อย่างชัดเจน
Sam Brightman

ใช่ .. อาจenv SHELL=/usr/bin/zsh tmuxจะดีกว่า (อัพเดทคำตอบ)
blueyed


1

คำตอบที่ยอมรับไม่ได้ผลสำหรับฉัน

ฉันต้องเขียนทั้งสอง

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

และ

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

ในของฉัน~/.tmux.conf- อย่าลืมที่tmux kill-server; tmuxจะโหลด tmux.conf


ฉันใช้tmux -V2.6 ภายใต้ Ubuntu 18 ในโปรแกรมจำลอง gnome-shell

ฉันยังเพิ่ม tmux กับhttps://github.com/samoshkin/tmux-config ลองดูสิมันเจ๋งจริงๆ


0

สำหรับฉันฉันต้องเปลี่ยน:

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

กับ

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

ใน.tmux.conf และเรียกใช้คำสั่งtmux kill-server; tmux


นี่คือคำตอบที่ซ้ำกันของsuperuser.com/a/1370909/174140
174140

@ John ผมเคยใช้แทนset-option -g set -gtmux เวอร์ชันต่าง ๆ น่าจะเป็น
Ali Amin

setset-optionเป็นนามแฝงสำหรับ
174140
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.