GNU/Linux >> Belajar Linux >  >> Linux

Perbedaan antara $HOME dan '~' (tilde)?

Tilde adalah bagian dari ekspansi shell (seperti di bash, csh, zsh, dll). $HOME variabel dapat diekspor dan dapat digunakan secara independen dari shell tertentu.


Shell menggantikan ~ dengan direktori beranda pengguna (perbarui :atau mungkin oleh direktori home dari beberapa pengguna lain, jika ~ diikuti oleh sesuatu selain / ), tetapi hanya jika itu adalah karakter pertama dari sebuah kata.

--with-libmemcached=~ memiliki ~ tidak di awal, jadi shell membiarkannya saja.


Perbedaan utamanya adalah:

cd /tmp
ls "$HOME" #works
ls "~" #nope

Jadi, dia akan memperluas ~ hanya dalam beberapa situasi. Dalam kasus Anda, skrip python sederhana mendapatkan ~ di dalam skrip - bukan nilai yang diperluas.


~ diperluas HANYA jika itu adalah karakter pertama dari sebuah kata DAN tidak dikutip

$ echo "~"
~
$ echo foo~
foo~
$ echo ~
/home/guest
$ echo ~/foo
/home/guest/foo

~username diperluas ke HOME dari username .

$ echo ~root
/root
$ echo ~invaliduser
~invaliduser

Mengutip nama file, Anda harus menggunakan $HOME atau kutip akhiran

$ echo "$HOME/foo bar"
/home/guest/foo bar
$ echo ~/"foo bar"
/home/guest/foo bar
$ echo ~root/"foo bar"
/root/foo bar

Perhatikan hal berikut dari "Ekspansi POSIX Tilde"

Nama jalur yang dihasilkan dari perluasan tilde harus diperlakukan seolah dikutip untuk mencegahnya diubah oleh pemisahan bidang dan perluasan nama jalur.


Linux
  1. Perbedaan Antara Shell Login dan Shell Non-login?

  2. Perbedaan Antara 2>&-, 2>/dev/null, |&, &>/dev/null Dan>/dev/null 2>&1?

  3. Apa Perbedaan Antara Sudo Su – Dan Sudo Su —?

  1. Perbedaan Antara Eot dan Eof?

  2. Perbedaan Antara [0-9], [[:digit:]] Dan D?

  3. Perbedaan Antara Perpipaan Dan Ekspansi Perintah?

  1. Perbedaan Antara Pengguna Sudo Dan Pengguna Root?

  2. Perbedaan Antara Qemu dan KVM

  3. Perbedaan antara CLOCK_REALTIME dan CLOCK_MONOTONIC?