How to change the starting directory of a tmux session?

后端 未结 3 1003
失恋的感觉
失恋的感觉 2021-02-05 01:03

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

相关标签:
3条回答
  • 2021-02-05 01:50

    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

    0 讨论(0)
  • 2021-02-05 01:51

    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).

    0 讨论(0)
  • 2021-02-05 01:56

    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
    
    0 讨论(0)
提交回复
热议问题