.
não é um bash (ou qualquer outro shell) embutido. Cada diretório possui entradas .
e ..
. Você pode verificar por cd'ing para algum diretório arbitrário e fazendo ls -lia
. Você verá .
e ..
entradas. Eu usei o sinalizador '-i' em ls
para obter números de inode: observe-os para .
e ..
. Vá até um diretório, mas fazendo cd ..
ou cd /something/soemthingelse/whatever
. Do ls -lia
novamente. Observe que o número de inode de .
é idêntico ao de ..
em sua primeira listagem. Todo diretório tem diretórios quando criado, chamado "." e "..". O "." entry tem o mesmo número de inode que o nome do diretório em seu diretório pai. A entrada ".." é sempre o diretório pai. Se você fizer ls -li /
, verá que "." e ".." tem o mesmo valor.
Esta convenção elimina a necessidade de um código de caso especial para referenciar o diretório atual: ele é sempre chamado de ".". Elimina a necessidade de código de caso especial para "subir um diretório": é sempre "..". Os únicos casos especiais são o diretório raiz e os sistemas de arquivos montados em rede. A raiz do sistema de arquivos tem "." e ".." com o mesmo número de inode, não diferente. Os sistemas de arquivos montados em rede têm uma descontinuidade nos números de inode no ponto de montagem, e o comportamento depende do sistema de arquivos remoto e de qual protocolo é usado para montá-lo.
No que diz respeito à alteração no prompt, quando você invocou mv ../ttt ../tttt
, você realmente renomeou o diretório de trabalho do seu shell. Você não chamou um comando shell que verifica o diretório de trabalho até que você tenha cd .
, portanto, o pwd
informará o nome antigo, /tmp/tt
.