Se eu navegar para um novo diretório vazio
~$ cd "'mktemp -d'"
e monte um sistema de arquivos lá
/tmp/tmp.4MlNzMERSw$ sudo mount /dev/sda5 .
e, em seguida, tente listar os arquivos lá, não vejo os arquivos neste sistema de arquivos:
/tmp/tmp.4MlNzMERSw$ ll
total 8
drwx------ 2 christoph christoph 4096 Jun 18 21:06 ./
drwxrwxrwt 18 root root 4096 Jun 18 21:09 ../
Minha explicação para isso é que o terminal adquire um descritor de arquivo de /tmp/tmp.4MlNzMERSw
quando executo o comando no primeiro bloco de código. Isso é confirmado pelo fato de que posso desmontar o sistema de arquivos executando
/tmp/tmp.4MlNzMERSw$ sudo umount .
nas mesmas janelas de terminal, mas se eu abrir um novo terminal pressionando Ctrl + Shift + N , não consigo. E eu não posso fazê-lo no primeiro terminal até que eu feche o segundo terminal ou navegue nele. É claro que não posso desmontá-lo no segundo terminal, contanto que eu fique em /tmp/tmp.4MlNzMERSw
com ele. O ponto é que não importa se eu movo o primeiro terminal para longe de /tmp/tmp.4MlNzMERSw
, pois ele parece manter seu antigo descritor de arquivo (de qual /tmp/tmp.4MlNzMERSw
costumava ser) e não adquire um novo ( que então manteria o sistema de arquivos ocupado e evitaria a desmontagem não-lenta).
Agora, não esperaria que o autocompletar de nomes de arquivos funcionasse na primeira janela de terminal, mas no segundo. E isso é exatamente o que eu observo. Mas afaik, autocompletar de nomes de arquivos é pré-buscado de qualquer forma, de alguma forma, mesmo que eu não possa encontrar evidências para isso (mas evidência contra isso), no momento.
No entanto, o que não entendo é por que posso fazer alterações de localização relativas para a frente (como cd mnt
) na primeira janela de terminal sem voltar primeiro ( Por exemplo, cd ..
e, em seguida, cd tmp.4MlNzMERSw/mnt
ou cd tmp.4MlNzMERSw
+ cd mnt
).
A primeira janela de terminal aparentemente pode usar seu descritor de arquivo existente para listar o conteúdo do diretório como era antes da montagem acontecer. Então, por que ele não usa esse mesmo descritor de arquivo para navegar adiante? * Isso não é possível?
* Se estivesse fazendo isso, a operação obviamente falharia.
Minha configuração
Meu computador roda o Ubuntu 16.04 com o Linux 4.4.0 e as atualizações mais recentes instaladas. Eu uso o emulador de terminal padrão (Terminal GNOME (versão 3.18.3)) com bash 4.3.48:
$ /proc/self/exe --version
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ gnome-terminal --version
GNOME Terminal 3.18.3
$ uname -r
4.4.0-79-generic