如何更改tmux会话的起始目录?

时间:2014-12-05 02:30:44

标签: linux unix tmux

启动tmux会话的目录将是所有新窗口将从其开始的目录。

我的问题是,如何在不关闭会话的情况下更改此起始目录?

3 个答案:

答案 0 :(得分:25)

执行此操作的方法是从会话中分离(^b d使用默认的键绑定),然后在重新连接时指定其他目录。附加到会话时,使用-c标志指定工作目录。这是一个例子:

$ 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

此设置将保留 - 重置工作目录后,每次重新连接到会话时都不需要继续指定它。

为了记录,我正在使用tmux 2.0版(虽然我觉得不重要 - 我找不到任何关于在更改中向-c命令添加attach-session选项的信息记录所以我认为它已经存在了很长一段时间。)

答案 1 :(得分:6)

Chucksmash的答案很好,但是如果您愿意的话,也可以不使用会话就可以实现。命令attach-session也可以在tmux命令提示符下找到;并且可以使用点将目标会话指定为“当前”会话。

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

答案 2 :(得分:5)

在这里,您无需更改会话即可更改tmux会话的工作目录,而无需使用<prefix>击键:

(选项1)tmux命令提示符下输入目录:

tmux command-prompt "attach -c %1"

...将打开命令提示符,然后键入所需的工作目录~/my/dir,然后按ENTER

(选项2)在窗格内命令行中提供目录:

# 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"

使用这种方法,将使用启动命令的窗格的当前目录预填充new目录的提示。当然,您可以根据需要用其他任何东西代替$PWD

是否需要shell函数?

我已将其添加到我的shell初始化中:

# 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"
 }

使用所有这些选项,以后任何新窗口都将在给定目录中启动。

注意: attachattach-sessiona都是彼此的别名。 tmux command-prompt还有许多其他功能,值得reading the man page