GNU/Linux >> Znalost Linux >  >> Linux

Rozdíl mezi $HOME a '~' (tilda)?

Vlnka je součástí expanze shellu (jako v bash, csh, zsh atd.). $HOME proměnná je exportovatelná a lze ji použít nezávisle na konkrétním prostředí.


Shell nahrazuje ~ s domovským adresářem uživatele (aktualizace :nebo možná podle domovského adresáře nějakého jiného uživatele, pokud ~ za ním následuje něco jiného než / ), ale pouze pokud se jedná o první znak slova.

--with-libmemcached=~~ ne na začátku, takže shell to nechá být.


Hlavní rozdíl je:

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

Shell tedy rozbalte ~ pouze v několika situacích. Ve vašem případě se python script simple dostal ~ dovnitř skriptu - nikoli expaded value.


~ je rozšířena POUZE, pokud se jedná o první znak slova A je bez uvozovek

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

~username je rozšířena na HOME z username .

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

Chcete-li citovat názvy souborů, měli byste použít $HOME nebo citujte příponu

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

Všimněte si následujícího z "POSIX Tilde Expansion"

S názvem cesty, který je výsledkem rozšíření vlnovky, se musí zacházet jako s uvozovkou, aby se zabránilo jeho změně rozdělením pole a rozšířením názvu cesty.


Linux
  1. Rozdíl mezi 2>&-, 2>/dev/null, |&, &>/dev/null A>/dev/null 2>&1?

  2. Jaký je rozdíl mezi Sudo Su – a Sudo Su –?

  3. Rozdíl mezi Eot a Eof?

  1. Rozdíl mezi [0-9], [[:digit:]] a D?

  2. Rozdíl mezi velikostí bloku a velikostí clusteru?

  3. Rozdíl mezi potrubím a rozšířením příkazů?

  1. Rozdíl mezi přihlašovacím prostředím a nepřihlašovacím prostředím?

  2. Rozdíl mezi Nss a Pam?

  3. Rozdíl mezi Qemu a KVM