如何获取 tmux 会话的基本目录?

如何获取 tmux 会话的基本目录?

我已经使用了tmux几个月了,有一件事情一直困扰着我:当我cd在 shell 中输入内容时,我会被移动到我的主目录(这是 的标准行为cd,所以没有什么意外的)。
我想要的是进入当​​前 tmux 会话的基目录,这可能可以通过 shell 函数轻松实现:

cd () {
   if [ $# -eq 0 ]
   then
      command cd $TMUX_BASE_DIR # fictional environment variable
   else
      command cd $@
}

但是,我还没有找到找到该目录的方法。 tmux 显然没有内置命令,也没有设置环境变量。我还浏览了手册页,但没有在COMMANDSVARIABLES部分找到任何内容。不过,这个目录需要保存在某个地方,因为打开一个新的 tmux 窗口会使其转到这个目录。
当然,每次我想要实现所需的行为时,我都会打开一个新窗口并关闭一个窗口,但这肯定不是最佳的,需要有一种更好的方法。

有没有办法实现这种行为/获取 tmux 中的会话基目录?如果是这样,怎么办?

答案1

我的 tmux(1) 手册记录了 a session_path,所以也许您可以使用类似“tmux 路径会话报告”脚本的内容来保存它:

#!/bin/sh
TMPFILE=`mktemp /tmp/tps-report.XXXXXXXXXX` || exit 1
tmux run "printf '#{session_path}\n' > \"$TMPFILE\""
cat "$TMPFILE"
rm $TMPFILE

另外你的$@可能应该写成"$@".

相关内容