The directory where you start a tmux session in will be the directory that all new windows will start at.
My question is, how can you change this starting directory wit
Here's how you can change the tmux session's working directory without detaching the session, and without needing use to the <prefix>
keystrokes:
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
# 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.
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
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