如何将默认路径/目录设置为会话启动的目录?

Ric*_*sen 5 tmux

我使用的是旧版本的 tmux (v1.5)。如何配置 tmux 将默认目录设置为会话启动的目录?

对于较新版本的 tmux(1.7 及更高版本),这不是问题。我可以简单地添加以下内容~/.tmux.conf以获得我想要的:

set-option -g default-path "-"
Run Code Online (Sandbox Code Playgroud)

不幸的是,此选项在我使用的 tmux 版本中不可用。

Ric*_*sen 6

这有点令人费解,但它有效:

  • 将此函数定义添加到您的~/.profile

    tmux() ( ORIG_PWD_FOR_TMUX="${PWD}" command tmux "$@"; )
    
    Run Code Online (Sandbox Code Playgroud)

    此函数运行tmux时将环境变量ORIG_PWD_FOR_TMUX设置为当前目录 ( ${PWD})。每当创建新窗口时都会引用此变量。

  • 将以下内容添加到您的~/.tmux.conf文件中:

    set-option -g default-command "[ -z \"\${ORIG_PWD_FOR_TMUX+set}\" ] || { cd \"\${ORIG_PWD_FOR_TMUX}\"; unset ORIG_PWD_FOR_TMUX; }; exec ${SHELL}"
    set-option -g -a update-environment " ORIG_PWD_FOR_TMUX"
    
    Run Code Online (Sandbox Code Playgroud)

    上面的default-command值检查ORIG_PWD_FOR_TMUX是否设置了环境变量。如果是这样,它会更改到该目录并取消设置变量(以保持环境清洁)。然后调用将在原始目录中运行的 shell。

    update-environment设置告诉tmux将 的值复制ORIG_PWD_FOR_TMUX到会话环境中,以便将来的new-window命令具有可用的变量值。

现在您可以tmux像往常一样简单地运行,除了新窗口将在与会话相同的目录中启动。