`mkdir ~root/.ssh`가 `mkdir /root/.ssh`와 같은 이유는 무엇입니까?

`mkdir ~root/.ssh`가 `mkdir /root/.ssh`와 같은 이유는 무엇입니까?

이것은 매우 사소한 일입니다. mkdir ~root/.sshmkdir /root/.ssh? 작성자가 디렉터리를 mkdir ~root/.ssh생성하는 데 사용하는 다음 docker 파일을 보고 있습니다 ..ssh

https://github.com/macropin/docker-sshd/blob/master/Dockerfile

다른 것보다 장점이 있습니까? 처음에 그것에 대해 읽었을 때 나는 ~root그것이 /rootroot.

답변1

~USER사용자 홈 디렉토리의 약어입니다 USER. 일반 사용자의 경우 일반적으로 yes /home/USER이지만 루트 사용자의 경우 일반적으로 yes 입니다 /root.

귀하의 질문이 다른 질문보다 나은지 여부에 관해서는 유일한 차이점은 홈 디렉토리가 확장 프로세스를 거치지 않고 절대 경로가 아닌 ~root루트로 동적으로 확장된다는 것입니다 . /root원하는 것은 특정 사용 사례에 따라 다릅니다. 루트의 홈 디렉토리가 root 이외의 위치에 있는 시스템에서 스크립트를 실행하려면 /root사용 하십시오 ~root. /root항상 절대 경로를 사용 하려면 를 사용하세요 /root.

현실적으로 대부분의 경우 아무런 차이가 없어야 합니다. 하지만 개인적으로 /root스크립트가 루트의 홈 디렉터리가 존재하지 않는 시스템에서 실행될 것으로 예상할 이유가 없는 한 사용하는 것이 더 안전하다고 생각합니다 /root.

답변2

"~" 기호는 홈 디렉토리를 참조하는 데 사용할 수 있는 특수 단축키 문자입니다.

~rootroot즉, 로그인한 사용자의 홈 디렉토리 /root를 나타내며
~이를 사용 하는 경우 홈 디렉토리를 ~user반환합니다 .user

답변3

분명한 이점이 있습니다 mkdir ~root/.ssh. mkdir/root/.ssh전자는 ~root루트 사용자에게 유연하게 확장될 수 있습니다.실제메인 디렉토리. 루트 사용자의 홈 디렉터리를 /root2나 /home/root 또는 /root 이외의 다른 디렉터리로 설정하려면 어떻게 해야 합니까?

답변4

다른 답변에서 이미 언급했듯이 새 디렉터리를 만들려는 위치에 따라 다릅니다. "mkdir /root/.ssh" 형식은 해당 절대 경로에 이를 명시적으로 생성합니다(/root 디렉토리가 이미 존재하고 다른 오류가 없다고 가정). 그러나 일반적으로 ssh에 필요한 정보를 저장하는 데 사용되는 .ssh 디렉터리를 만들려고 하므로 "mkdir ~root/.ssh"의 다른 형식을 선호해야 한다고 생각합니다. 기타 오류) ssh 명령이 예상하는 정확한 위치, 즉 루트 사용자의 홈 디렉토리(파일 시스템의 정확한 위치)에 새 디렉토리 .ssh를 생성하며 일반적으로 항상 /root일 필요는 없습니다.

관련 정보