ターミナルで、ホームを参照する1つの方法は、~/
を使用することです。 file ~/
の出力は次のとおりであるため、これがどのように機能するのか理解できません。
/home/admin/: directory
~/
を実行すると、次の結果になります。
-bash: /home/admin/: Is a directory
~/
を/home/admin
に変換するものは何ですか?
~/
は/bin/dash
でも動作するように見えるので、bash固有ではないこともわかっています。
ティルド展開は POSIX ( 最初のリンク先ページ を参照)で必要であり、最新のすべての Bourneスタイルのシェル に表示されます。これには、一般的なシェルbash
、ksh93
、およびzsh
が含まれますが、mksh
、dash
、およびbusybox ash
などのよりミニマルなシェルも含まれます。
実際には、異なるPOSIX互換シェルは、HOME
が使用されるが未設定または空である不特定の場合と、ユーザーのホームを拡張する以外の目的で~
表記を使用できるようにする場合の両方で、チルダ展開の正確な詳細が異なる場合がありますディレクトリ。たとえば、 bash
のチルダ展開 は、それぞれ~-
および~+
を使用して、PWD
およびOLDPWD
変数の値にアクセスするための省略形も提供します。
ただし、典型的なケースでは、Bourneスタイルのシェル全体でほぼ同じように機能します。これらは典型的なケースです(ただし、separatingのこの方法は公式ではないことに注意してください、それは単に資料を提示する私の方法です):
~
または~/
自体がホームディレクトリに展開されます。~/
の後にさらにパスコンポーネントが続くと、ホームディレクトリから始まるパスに展開されます。~username
または~username/
は、ユーザー名がusername
であるユーザーのホームディレクトリに展開されます。~username/
に続くパスコンポーネントは、ユーザー名がusername
であるユーザーのホームディレクトリから始まるパスに展開されます。~
は$HOME
の「速記」です~
は、$HOME
を言い換えると、ホームディレクトリに書き込む「速記」方法です。シェル(例:bash
)で動作し、「チルダ展開」と呼ばれます。
末尾にスラッシュを追加すると、ディレクトリについて話していることを意味します。
例:
$ ls -d ~/
/home/sudodus/
$ ls -d ~
/home/sudodus
$ ls -d $HOME
/home/sudodus
$ Sudo -i
[Sudo] lösenord för sudodus:
# ls -d ~/
/root/
# ls -d ~
/root
# exit
logout
$ ls xournal.png
xournal.png
$ LANG=C ls xournal.png/
ls: cannot access 'xournal.png/': Not a directory