当我在 tmux 中创建新窗口/ Pane 时,例如通过 tmux neww 或键绑定(bind) prefix+c
、prefix+%
等,新 Pane 的工作目录与以前的 Pane 相同,但路径中具有取消引用的符号链接(symbolic link)。
例如,如果我在
/home/user/my-link/a
其中my-link ->/mnt/user/
,我必须
/mnt/user/a
显式地将新目录传递给 tmux
也不起作用:
tmux neww -c $(pwd)
我可以禁用此类解除引用吗?我想我可以通过 tmux 环境变量编写一个解决方法,但我想要一个更清晰的解决方案。
我在 Ubuntu 14.04 上从存储库运行 tmux 1.8。
最佳答案
此行为无法禁用,而且似乎甚至无法在 tmux 中实现此功能(source)。
在 Linux 中,进程的工作目录始终被跟踪为实际目录(已解析符号链接(symbolic link))。您可以通过在目录 /home/user/my-link/a
中发出 ls -l/proc/self/cwd
来查看这一点,它将显示当前工作目录实际上是/mnt/user/a
。这样做的原因可能是当进程位于该目录中时删除(甚至更改)符号链接(symbolic link)时不会遇到麻烦。
您的 shell 向您显示 /home/user/my-link/a
作为工作目录的功能完全在 shell 本身中实现。它在 pwd
环境变量中跟踪它,但 tmux 无法访问子进程的环境变量。
我发现按照您的意愿创建新窗口的最简单方法是
tmux neww "cd $(pwd); exec $SHELL"
关于symlink - 创建新窗口/ Pane 时阻止 Tmux 取消引用路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32923126/