symlink - 创建新窗口/ Pane 时阻止 Tmux 取消引用路径

标签 symlink tmux

当我在 tmux 中创建新窗口/ Pane 时,例如通过 tmux neww 或键绑定(bind) prefix+cprefix+% 等,新 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/

相关文章:

tmux:在 run-shell 命令后挂起并且不响应任何命令

python-3.x - 在 tmux 中从 vim 复制到 python 控制台

linux - 是否可以在同一 SVN 存储库的不同目录中建立从文件 A 到文件 B 的链接?

Linux: 'transferring'/镜像符号链接(symbolic link)的只读权限(用于网络服务器)

Linux - 递归列出具有性能的文件夹中的所有文件

unix - 是否可以同时运行两个不同版本的 tmux?

shell - 导致隐藏状态消息的 tmux 选项是什么?

git - .tmux.conf : update status commands on panel focus

linux - 创建带有子目录的符号链接(symbolic link)

linux - 如何获取符号链接(symbolic link)的文件描述符?