How to change the starting directory of a tmux session?

The way to do this is to detach from the session (^b d with the default keybindings) and then specify a different directory when you reattach to it. When attaching to a session, use the -c flag to specify the working directory. Here's an example:

$ tmux list-sessions
tmuxwtfbbq: 3 windows (created Tue Apr  5 14:25:48 2016) [190x49]
$ tmux attach-session -t tmuxwtfbbq -c /home/chuck/new_default_directory

This setting will be persisted - after you've reset the working directory, you won't need to keep specifying it every time you reattach to the session.

For the record, I'm on tmux version 2.0 (though I don't think it matters - I couldn't find anything about adding a -c option to the attach-session command in the change logs so I assume it's been there for quite a while).


Chucksmash's answer is a good one, but it can also be achieved without using the session if you like. The command attach-session is also available in the tmux command prompt; and the target session can be specified as the "current" session using a dot.

attach-session -t . -c /path/to/new/directory

Here's how you can change the tmux session's working directory without detaching the session, and without needing use to the <prefix> keystrokes:

(Option 1) Enter the directory at tmux command prompt:

tmux command-prompt "attach -c %1"

...will open a command prompt, then you type the working directory you want ~/my/dir and press ENTER

(Option 2) Provide the directory on the in-pane command line:

# Execute this in one of the shell panes of within your tmux session:
tmux command-prompt -I $PWD -P "New session dir:" "attach -c %1"

With this approach, the prompt for new-directory is pre-populated with the current dir of the pane which launched the command. Of course you can substitute anything else for $PWD if you please.

Want a shell function?

I have added this to my shell initialization:

# Change the current directory for a tmux session, which determines
# the starting dir for new windows/panes:
function tmux-cwd {
    tmux command-prompt -I $PWD -P "New session dir:" "attach -c %1"
 }

With all of these options, any future new windows will start in the given dir.

Note: attach, attach-session, and a are all aliases for each other. The tmux command-prompt has many other powers, it's worth reading the man page

Tags:

Linux

Unix

Tmux