`mkdir ~root/.ssh`が`mkdir /root/.ssh`と同じ理由は何ですか?

`mkdir ~root/.ssh`が`mkdir /root/.ssh`と同じ理由は何ですか?

これはとても些細なことです。mkdir ~root/.sshなぜmkdir /root/.ssh?作成者がディレクトリのmkdir ~root/.ssh作成に使用する次のdockerファイルを見ています。.ssh

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

他よりも利点がありますか?最初にそれについて読んだとき、私は~rootそれが/rootroot

答え1

~USERユーザーのホームディレクトリの略語ですUSER。一般ユーザーの場合は通常yes/home/USERですが、rootユーザーの場合は通常yesです/root

あなたの質問が他の質問よりも良いかどうかについての唯一の違いは、ホームディレクトリが拡張プロセスを経ず、絶対パスではなくルートに動的~rootに拡張されることです。/root必要なのは、特定のユースケースによって異なります。ルートのホームディレクトリがroot以外の場所にあるシステムでスクリプトを実行するために/root使用します~root/root常に絶対パスを使用するには、を使用してください/root

現実的にほとんどの場合、違いはありません。しかし、個人的には、/rootスクリプトがルートのホームディレクトリが存在しないシステムで実行されると予想する理由がない限り、使用する方が安全だと思います/root

答え2

「〜」記号は、ホームディレクトリを参照するために使用できる特別なショートカット文字です。

~rootrootつまり、ログインしたユーザーのホームディレクトリを/root表し、
~それを使用している場合はホームディレクトリを~user返します。user

答え3

明らかな利点がありますmkdir ~root/.sshmkdir/root/.ssh前者は~rootrootユーザーに柔軟に拡張できます。実際メインディレクトリ。 rootユーザーのホームディレクトリを/ root2、/home/root、または/root以外の別のディレクトリに設定するにはどうすればよいですか?

答え4

他の回答ですでに述べたように、新しいディレクトリを作成する場所によって異なります。 "mkdir /root/.ssh" 形式は、その絶対パスにそれを明示的に生成します (/root ディレクトリがすでに存在し、他のエラーがないと仮定します)。しかし、通常、sshに必要な情報を保存するために使用される.sshディレクトリを作成しようとしているので、 "mkdir ~root/.ssh"の他の形式を優先する必要があると思います。その他のエラー)sshコマンドが期待する正確な場所、つまりrootユーザーのホームディレクトリ(ファイルシステムの正確な場所)に新しいディレクトリ.sshを作成し、通常は常に/ rootである必要はありません。

関連情報