我已经使用了tmux
几个月了,有一件事情一直困扰着我:当我cd
在 shell 中输入内容时,我会被移动到我的主目录(这是 的标准行为cd
,所以没有什么意外的)。
我想要的是进入当前 tmux 会话的基目录,这可能可以通过 shell 函数轻松实现:
cd () {
if [ $# -eq 0 ]
then
command cd $TMUX_BASE_DIR # fictional environment variable
else
command cd $@
}
但是,我还没有找到找到该目录的方法。 tmux 显然没有内置命令,也没有设置环境变量。我还浏览了手册页,但没有在COMMANDS
或VARIABLES
部分找到任何内容。不过,这个目录需要保存在某个地方,因为打开一个新的 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
另外你的$@
可能应该写成"$@"
.