tmux가 기본 쉘을 사용하도록하려면 어떻게해야합니까?


155

새로운 설정에서 tmux는 기본값 (zsh) 대신 bash를 사용하고 있습니다.

zsh를 사용하도록하려면 어떻게해야합니까?


12
알아 냈습니다. tmux 설정에서 다음을 설정할 수 있습니다. set -g default-command / bin / zsh set -g default-shell / bin / zsh
re5et

4
FWIW, default-shell을 설정했다면 default-command를 설정할 필요가 없습니다.
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 : tmux를 다시 시작하면 의미 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
chsh -stmux가 독립적 인 옵션을 제공하므로 사용자 셸 ( ) 을 설정할 필요가 없습니다 .
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
Er, re5et (OP)이 Mac에 있거나 해당 랩퍼 프로그램이 설치되어 있다는 표시가 있습니까?
Chris Johnsen 2012

1
이 답변은 Mac OS X에서만 작동한다고 생각합니다.
EhevuTov

5
tmux kill-server모든 tmux 서버를 종료하는 명령입니다
Keith Smiley

1
OP가 요청한 대답은 아니지만이 스레드에서 결국이 래퍼를 사용하여 OS X를 사용하고 있으며 이것이 필요한 솔루션입니다. 감사합니다!
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를 시작한 tmux kill-server다음 tmux다시 시작 해야 할 수 있습니다 .


1
이것은 나를 위해 일한 유일한 대답입니다 (tmux kill-server 명령)
undefined

2

사용 chsh(1):

chsh -s /bin/zsh $USER

1
나는 이미이 세트를 가지고 있었지만 tmux는 그것을 무시하고있었습니다.

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새로운 쉘 이름으로 설정되지 않으며 (이유가 확실하지 않음) 시작시 설정되지 않은 경우 bash 초기화로 로그인 쉘로 설정됩니다. tmux는 default-shell명시 적으로 설정되지 않은 경우이 값을 사용합니다 .
Sam Brightman

그래 .. 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.conftmux kill-server; tmuxtmux.conf를 다시로드하는 것을 잊지 마십시오.


나는 tmux -V그놈 쉘 에뮬레이터의 우분투 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

@john set-option -g대신에 사용 했습니다 set -g. tmux의 다른 버전들
Ali Amin

set의 별칭입니다 set-option.
174140
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.