Por que 'mkdir ~ root / .ssh' é a mesma coisa que 'mkdir /root/.ssh'?

1

Isso é bastante trivial e estou curioso para saber por que mkdir ~root/.ssh é a mesma coisa que mkdir /root/.ssh ? Estou revendo o seguinte arquivo docker e o criador usa mkdir ~root/.ssh para criar o diretório .ssh :

link

Existe alguma vantagem sobre a outra? Quando li pela primeira vez, presumi que ~root seria expandido para /rootroot .

    
por Ole 12.05.2016 / 17:08

4 respostas

5

~USER é apenas uma notação abreviada para o diretório inicial do usuário USER . Para um usuário normal, isso normalmente seria /home/USER , mas, para root, normalmente é /root .

Quanto à sua pergunta se um é preferível ao outro: A única diferença é que ~root é expandido dinamicamente para o diretório inicial do root, enquanto /root é um caminho absoluto que não passa por nenhum processo de expansão. O que você quer depende do seu caso de uso específico. Se você quiser que seu script funcione em máquinas em que o diretório pessoal do root esteja em outro lugar que não seja em /root , use ~root . Se você quiser ter certeza de que o caminho absoluto /root é sempre usado, use /root .

Na prática, não deve fazer diferença na maioria dos casos, embora eu pessoalmente me sinta mais seguro usando /root a menos que eu tenha motivos para esperar que meu script seja executado em máquinas onde o diretório home do root não é /root .

    
por 12.05.2016 / 17:11
1

O símbolo "~" é um caractere de atalho especial que pode ser usado para se referir ao seu diretório pessoal.

~root será igual ao diretório base root users, que é /root .
~ representa o diretório inicial dos usuários registrados e, se você usar ~user , ele retornará o% diretório inicial douser.

    
por 12.05.2016 / 17:10
1

Há uma vantagem distinta em mkdir ~root/.ssh over mkdir/root/.ssh - a primeira é flexível em sua expansão de ~root para o diretório home real do usuário raiz. E se você decidisse que queria que o diretório pessoal do seu usuário root fosse / root2 ou / home / root ou algo além de / root?

    
por 12.05.2016 / 17:15
0

Como já foi mencionado nas outras respostas, depende de onde você pretende criar o novo diretório. O formulário "mkdir /root/.ssh" o cria inequivocamente exatamente nesse caminho absoluto (supondo que o diretório / raiz já exista e nenhum outro erro). No entanto, desde que você pretende criar o diretório .ssh que é normalmente usado para armazenar informações exigidas pelo ssh, minha opinião seria que você deveria preferir o outro formulário "mkdir ~ root / .ssh" porque ele (assumindo que não há outro erro) cria o novo diretório .ssh exatamente onde é esperado pelo comando ssh - no diretório inicial do usuário root, independentemente de onde exatamente ele está localizado no sistema de arquivos, e que não precisa ser / root sempre, embora normalmente seja.

    
por 15.05.2016 / 09:01

Tags