Estou no meu diretório pessoal no meu mac:
$ pwd
/Users/lukas
Quando estou por cd
perto, não (e não posso) iniciar o caminho com /
:
$ cd Documents/
/Users/lukas/Documents
$ cd /Documents
-bash: cd: /Documents: No such file or directory
Exceto quando estou em /
:
$ pwd
/
$ cd Users
/Users
$ cd /Users
/Users
Por que posso usar /
na frente do caminho ao passar /
para, /Users
mas não nos níveis subseqüentes? Isso é específico para o macOS ou esse é o comportamento padrão do Unix?
linux
command-line
mac
terminal
LukasKawerau
fonte
fonte
Respostas:
Esse é o comportamento padrão do Unix.
O
/
no início do caminho representa a raiz do disco (ou o nível inicial / superior da árvore do sistema de arquivos). ComoDocuments
não está fora da raiz,/Documents
não pode ser encontrado./Users
está fora do diretório raiz, portanto, esse problema não ocorre.Você pode usar
cd /Users/lukas/Documents
para mudar para esse caminho.Como alternativa, você pode usar o endereçamento relativo. Os sistemas de arquivos baseados em Unix têm 2 diretórios especiais:
.
o que significa "este diretório",..
o que significa o diretório pai.Se você estiver dentro
/Users/lukas
,cd ./Documents
levará você ao local correto.Vamos supor que você estava
/Users/Lukas/Documents
e queria ir/Users/Janes/Documents
, você poderia emitir um comandocd ../../Janes/Documents
- usando..
você levaria um nível para trás -, então você faria isso duas vezes, antes de seguir para o novo caminho relativo.fonte
Users/lukas
,cd Documents
pede o caminho relativo ;cd /Users/Lukas/Documents
solicita o caminho absoluto (que estaria funcionando qualquer repertório em que você esteja ao chamar este comando)./
por `\`), já que o DOS o emprestou (através de uma longa e complicada história) do Unix./Users/lukas
é um caminho "absoluto". O líder/
representa o diretório raiz do seu sistema de arquivos.lukas
é um caminho "relativo". Como não está ancorado na raiz, significa "procure por isso no diretório atual ". A menos que o diretório atual seja/Users
(ou algum outro diretório com umlukas
), isso falhará.Então, vamos explorar seus exemplos, supondo que você esteja
/Users/lukas
:Caminho relativo fornecido => mude para o diretório "Documents" que está dentro
/Users/lukas
.Caminho absoluto dado => mude para o diretório
/Documents
.Isso mostra que você agora mudou o diretório de trabalho para o diretório raiz
/
(embora ocd
comando para fazer isso não tenha sido mostrado).Caminho relativo fornecido => mude para o diretório "Usuários" que está dentro
/
.Caminho absoluto dado => mude para o diretório
/Users
.A chave de cada vez é essa liderança
/
. Com isso, o caminho é absoluto. Sem ele, o caminho é relativo. Esta regra é inequívoca porque todos os caminhos absolutos começam com/
(porque o diretório raiz é sempre chamado/
).Aqui estão alguns pseudocódigos que descrevem livremente esse algoritmo:
O argumento para o qual você passa
cd
passa por esse algoritmo; o diretório para o qual você acaba alterando é o caminho que o algoritmo retorna.Leitura adicional:
Joseph L. Zachary
"Introdução à programação científica"
fonte