刚才我遇到了一个非常奇怪的情况。我正在 TMUX 会话中通过 SSH 运行 Ubuntu 的云虚拟机上管理一些内容。现在,我打开了两个窗格,即使它们位于同一台(虚拟)PC 上,它们也会看到不同的文件:
1号航站楼:
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ pwd
/home/pan/shared/Lammps/new-lengths/125
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ hostname
gergo-skynet-master.desy.de
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ ls
*****_annotated.in data.lammps ******.py process rg run1.restart
SHAKE_10 dump_*****.lammpstrj lammps.out process.py rg.dump ******.data
SHAKE_7 extract_data.sh log.lammps process_all.py run.restart
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$
2 号航站楼:
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ pwd
/home/pan/shared/Lammps/new-lengths/125
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ hostname
gergo-skynet-master.desy.de
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ ls
*****_annotated.in extract_data.sh *****.py process process.py process_all.py ******.data
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$
我不得不审查一些文件名,但你明白了。
我确认的事情:
- 我位于完全相同的文件系统位置。
ls
在两个终端中都没有别名。- 我在同一台机器上的两个终端中是同一用户。
我确定正确的是上面的那个,但我很困惑这怎么可能?即使在下层终端中进行 cd 操作后,它也不会看到上层终端所看到的所有文件。我什至不知道从哪里开始调试这种情况。我担心以后我也不会因为同样的问题而看到一些重要的文件,所以我真的想弄清楚在关闭下终端之前发生了什么。
你有什么主意吗?哪些附加信息会有用?
答案1
有多种原因可能导致此行为。考虑以下事件序列:
创建一个目录,进入该目录并创建一些文件:
mkdir /tmp/dir1 cd /tmp/dir1 touch file{1,2,3}
从另一个终端,重命名该目录,使用原始名称创建一个新目录,并用不同的文件填充它:
mv /tmp/dir1 /tmp/dir2 mkdir /tmp/dir1 cd /tmp/dir1 touch file{4,5,6}
现在在原始终端中我们看到:
$ pwd /tmp/dir1 $ ls file1 file2 file3
在第二个终端中我们看到:
$ pwd /tmp/dir1 $ ls file4 file5 file6
还有其他情况可能会产生这种行为(例如,在两个终端的单独安装命名空间中运行——也许在容器中),但上述似乎是最有可能的解释。