Enquanto estiver no /
diretório e use ls -a
o resultado conterá .
e..
Posso entender a existência de .
que é um ponteiro para o próprio diretório. Qual é o significado de ter o ..
no /
diretório enquanto não há diretório pai para o /
?
Responder1
Muitos softwares trabalham com base em suposições,nãona verdade, garantido a eles pelo POSIX.1, mas tradicionalmente o caso em sistemas UNIX e consagrado em grande parte da literatura UNIX, que (para citar uma dessas peças da literatura UNIX):
Cada diretório contém os nomes de arquivo ponto e ponto-ponto (.
e..
) cujos números de inode são os do diretório e de seu diretório pai, respectivamente.[…]O programamkfs
inicializa um sistema de arquivos para que.
o..
diretório raiz tenha o número do inode raiz do sistema de arquivos.—Maurice J. Bach (1986).O Design do Sistema Operacional UNIX. Salão Prentice. pág. 73
Por exemplo: A antiga getcwd()
função da biblioteca (em sistemas que não forneciam suporte especial do kernel para ela) depende disso parasaiba quando pararrastrear a cadeia de ..
entradas ao compor o nome do diretório atual. Ele para quando atinge um diretório que é seu próprio pai ou não pode ir até ..
.
Portanto, a razão pela qual o diretório raiz tem (ou no que diz respeito aos programas em modo de aplicativos, pelo menosparecepara ser visto através da API do sistema) uma ..
entrada é que muitas coisas são baseadas na suposição de quetododiretório possui ..
, e que ..
na raiz um loop pode ser usado para detectar que alguém está na raiz.
Na verdade, POSIX.1 não garante que o diretório raiz tenha um ..
, apenas especificando queos programas têm que levar em conta a possibilidade de um loop seexiste um ..
no diretório raiz. Isso permite que sistemas não-UNIX também sejam compatíveis com POSIX. Existem sistemas de arquivos onde oausênciaof ..
indica que um diretório é um diretório raiz. E existem, como o próprio Bach discute, sistemas onde existe um diretórioacimaa raiz, que o POSIX.1 permite em sua discussão de nomes de caminhos absolutos que começam comdoisbarras (semelhantes à Convenção de Nomenclatura Universal usada em sistemas de rede local da Microsoft).
O Linux (e, portanto, o Ubuntu Linux), entretanto, fornece as garantias mais rigorosas do paradigma UNIX.
Responder2
Muito simplesmente: por meio de diretório de arquivos, ./
significaesta pasta, enquanto ../
significaonde está o arquivo(por exemplo, quando estou no diretório user/home/me/Desktop
, então ../
me levará para /user/home/me
).