मैं अपने डिफ़ॉल्ट शेल का उपयोग tmux कैसे कर सकता हूं?


155

एक नए सेटअप पर, tmux मेरे डिफ़ॉल्ट (zsh) के बजाय बैश का उपयोग कर रहा है।

मैं इसे ज़ीश का उपयोग करने के लिए कैसे मजबूर कर सकता हूं?


12
पता लगा लिया। Tmux config में निम्नलिखित सेट कर सकते हैं: set -g default-command / bin / zsh set -g default-shell / bin / zsh
re5et

4
अगर आपने डिफॉल्ट-शेल सेट किया है, तो FWIW, आपको डिफ़ॉल्ट-कमांड सेट करने की आवश्यकता नहीं है।
निकोलस रिले 20

जवाबों:


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

में ~/.tmux.confया /etc/tmux.conf। फेडोरा पर काम करता है।

आपको tmux को पुनः आरंभ करना पड़ सकता है killall tmux; tmux


5
यदि यह आपके लिए काम नहीं करता है, तो सुनिश्चित करें कि आपने पुनः आरंभ किया है tmux। स्पष्ट लगता है, लेकिन मुझे यह पता लगाने के लिए एक अच्छा घंटा लगा!
एंडी स्मिथ

27
बीटीडब्ल्यू: टमक्स को फिर से शुरू करने का मतलब है killall tmux; tmux। मुझे पता करने के लिए काफी समय लगा।
js-

5
एक सर्वर को मारे बिना कन्फूज पुनः लोड किया जा सकता है:bind R source-file ~/.tmux.conf \; display-message " Config reloaded..".
ДМИТРИЙ МАЛИКОВ

14
या केवल tmux source-file ~/.tmux.confकमांड लाइन से चलते हैं ।
पेट्र पुडलक

12
@ js-coder: मैं आपके tmux kill-serverबजाय अपने tmux सर्वर को अधिक सफाई से मारना चाहूंगा ।
चुइं

41

पहले यह सुनिश्चित करें कि आपका डिफ़ॉल्ट शेल आपकी कमांड लाइन में इसे चलाने के माध्यम से ठीक से zsh पर सेट है:

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

अपने ~ / .tmux.conf में फोलोइंग को रखना किसी भी शेल के लिए अधिक मजबूत विकल्प है।

set-option -g default-shell $SHELL

1
उपयोगकर्ता शेल ( chsh -s) को सेट करना अनावश्यक है क्योंकि tmux उस से स्वतंत्र विकल्प प्रदान करता है।
महमूद अल-कुद्सी

मुझे लगा कि $ शेल चर का उपयोग करना अधिक मजबूत था। लेकिन यह एक अतिरिक्त कदम और भ्रम जोड़ता है इसलिए मैं स्वीकृत उत्तर को प्राथमिकता देता हूं।
डिबगएक्सवाईजेड

यह स्वीकृत उत्तर से बेहतर है। मेरा zsh / bin / zsh में संस्थापित नहीं है।
हैप्पीफेस

20

इस रेखा को अपने नीचे में गिराएं ~/.tmux.conf

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

आपके द्वारा जोड़ने के बाद, अपने tmux सर्वर को मारें और पुनः आरंभ करें और सभी को काम करना चाहिए।


2
एर, क्या कोई संकेत है कि re5et (ओपी) एक मैक पर है, या उस आवरण प्रोग्राम को स्थापित किया गया है?
क्रिस जॉन्सन

1
मुझे लगता है कि यह जवाब केवल मैक ओएस एक्स के लिए काम करता है
इहेवुतोव जूल

5
tmux kill-serverसभी tmux सर्वर को समाप्त करने का कमांड है
कीथ स्माइली

1
हालाँकि यह वह उत्तर नहीं था जो ओपी ने पूछा था, मैंने इस थ्रेड का उपयोग करते हुए इस धागे में समाप्त किया और वास्तव में मैं ओएस एक्स पर हूं, और यह वह समाधान है जिसकी मुझे आवश्यकता थी; इसलिए तुम्हे धन्यवाद!
जोस अल्बन

1
यह कैसे अलग है set-option -g default-shell ? मछली खोल के साथ काम करने के लिए ऊपर नहीं लगता है।
टॉमी

5

यदि आप tmux को अपने पर्यावरण चर में निर्दिष्ट शेल के उपयोग के लिए बाध्य करना चाहते हैं, तो आप उपयोग कर सकते हैं:

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

अपने में ~/.tmux.confया /etc/tmux.conf

परिवर्तन वास्तव में प्रभावी करने के लिए पाने के लिए आपको करना पड़ सकता है tmux kill-serverऔर उसके बाद tmuxtmux पुनः आरंभ करने की।


1
यह एकमात्र उत्तर है जिसने मेरे लिए काम किया (tmux किल-सर्वर कमांड)
अपरिभाषित

2

उपयोग करें chsh(1):

chsh -s /bin/zsh $USER

1
मेरे पास पहले से ही यह सेट था, लेकिन tmux इसे अनदेखा कर रहा था।
5

2

लॉग-आउट और लॉग-इन ने फिर से मेरी समस्या को ठीक किया। जब $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नए शेल नाम पर सेट नहीं होगा (अनिश्चित क्यों), और बैश इनिशियलाइज़ेशन इसे स्टार्टअप पर लॉग इन करने पर लॉगिन शेल में सेट करेगा। यदि default-shellस्पष्ट रूप से सेट नहीं किया गया है तो tmux इस मान का उपयोग करता है।
सैम ब्राइटमैन

हाँ .. शायद env SHELL=/usr/bin/zsh tmuxबेहतर है? (जवाब अद्यतन)।
blueyed

1

इसे अपने में जोड़ें ~/.tmux.conf

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

1

स्वीकृत जवाब मेरे काम नहीं आया।

मुझे दोनों लिखना था

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

तथा

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

मेरे में ~/.tmux.conf- tmux kill-server; tmuxtmux.conf को फिर से लोड करने के लिए मत भूलना


मैं tmux -Vgnome-खोल एमुलेटर में Ubuntu 18 के तहत 2.6 का उपयोग कर रहा हूं ।

मैंने https://github.com/samoshkin/tmux-config के साथ tmux को भी बढ़ाया । इसे देखें, यह वास्तव में अच्छा है।


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

@ जॉन मैं set-option -gइसके बजाय इस्तेमाल किया है set -g। tmux के विभिन्न संस्करण शायद
अली अमीन

setके लिए एक उपनाम है set-option
174140
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.