我注意到运行 tmux 时,它总是从/home/user/
目录启动,无论 tmux 启动的 shell 的当前工作目录如何。
我通过pwd
在状态行运行确认了这一点:
set -g status-right "#(pwd)"
我想在状态行运行一些 shell 脚本,但我不想手动处理所有脚本的目录更改。
我想要的是 tmux 将目录更改为它启动/调用的位置。
我怎样才能做到这一点呢?
答案1
$ ps -ef | grep tmux
username 13965 12977 0 13:03 pts/2 00:00:00 grep --color=auto tmux
$ cd /tmp
/tmp $ tmux
(within tmux) /tmp $ ps -ef | grep tmux
username 14244 12977 0 13:04 pts/2 00:00:00 tmux
username 14246 1 0 13:04 ? 00:00:00 tmux
username 14269 14247 0 13:04 pts/3 00:00:00 grep --color=auto tmux
(within tmux) /tmp $ ls -l /proc/14244/cwd /proc/14246/cwd
lrwxrwxrwx 1 username username 0 Sep 25 13:07 /proc/14244/cwd -> /tmp/
lrwxrwxrwx 1 username username 0 Sep 25 13:07 /proc/14246/cwd -> /tmp/
它看起来像 tmux 客户端和服务器进程的工作目录是tmux 启动目录,但从 tmux 状态行启动的任何进程(例如#(pwd)
您的行中的进程)都将作为其工作目录status-right
运行。$HOME
更改此行为需要修改tmux
源代码并编译您自己的版本。
答案2
提交后问题在 tmux repo,事实证明他们已经修复了它,但它仍然处于阶段release-candidate
。所以我不得不从源头重建。