41

I've become addicted to Byobu and I've recently shifted from bash to zsh; Now I want to combine the two, however I have a one initial pre-requisite:

I cannot make zsh the default shell for my user as it's a shared account and the rest of the team aren't as zsh happy as I am - That rules out the 'chsh -s /bin/zsh' option.

So, I discovered you can set a default-shell for tmux (which should follow across to byobu right?). That would be perfect as I'm also the only one really using Byobu on the server.

Problem is, I can't work out where to enable this option in the confusion of config files that's created in the tmux/byobu mix.

Any hints?

Ashimema
  • 2,075

2 Answers2

71

Put the following in your $BYOBU_CONFIG_DIR/.tmux.conf (usually ~/.config/byobu/.tmux.conf or $HOME/.byobu/.tmux.conf):

set -g default-shell /usr/bin/zsh
set -g default-command /usr/bin/zsh

Full disclosure: I'm the author and maintainer of Byobu.

  • 4
    Thanks Dustin, I'm always super impressed that you hang around here!

    It's was the 'set -g default-command' bit I was missing in the end.. I didn't realise you needed the second configuration parameter for it to work.

    – Ashimema May 16 '13 at 19:21
  • 7
    No problem ;-) It's 1000x more useful when someone asks a good question like this, here in AskUbuntu or StackExchange, so that others can benefit from the answer :-) I just wish I could get all of the people who use IRC and Launchpad Questions over here... – Dustin Kirkland May 16 '13 at 19:47
  • I found that this loads two shells of the desired type, one clobbering the other. Setting just default-shell results in bash clobbering the shell I'm trying to set, but setting default-command results in exactly one of the desired shells being started. I guess having the same shell clobber itself is fine, but this could incur a bit of a start time hit as some shells take a while longer to start. – nedned May 17 '16 at 09:25
  • Is it possible to run a command instead? For example, will set -g default-shell sudo su work? – Dev Sep 12 '16 at 04:24
  • 1
    Why not the byobu-select-backend command? – Pablo Bianchi Feb 15 '17 at 13:19
  • 1
    Note that the settings file may be ~/.config/byobu/.tmux.conf, depending how your linux is configured. – ostrokach Jun 23 '17 at 04:55
  • 1
    export SHELL=/usr/bin/zsh; byobu @Dev – Zhang LongQI Apr 20 '21 at 09:59
1

For me, Dustin's solution didn't seem to take at first.

I used to have a working setup where gnome-terminal launched zsh as a login shell, which then launched byobu with my window (split) setup and a couple of zsh instances in there. After a distro reinstall, the shell instances in the splits were suddenly bash, for whatever reason, even with the above fix.

Whenever I launched zsh in those splits I'd get a message from oh-my-zsh that a plugin was missing.

I installed the missing package for the plugin and configured it correctly, and now all stages of the setup execute correctly. I suspect that the error message from the sourcing process within oh-my-zsh may have caused a fallback to bash (possibly within tmux?).

Pablo Bianchi
  • 17,552