GNU/Linux >> Linux Esercitazione >  >> Linux

Differenza tra $HOME e '~' (tilde)?

La tilde fa parte di un'espansione della shell (come in bash, csh, zsh, ecc.). Il $HOME variabile è esportabile e può essere utilizzata indipendentemente da una shell specifica.


La shell sostituisce ~ con la home directory dell'utente (update :o forse dalla home directory di qualche altro utente, se ~ è seguito da qualcosa di diverso da / ), ma solo se è il primo carattere di una parola.

--with-libmemcached=~ ha ~ non all'inizio, quindi la shell lo lascia stare.


La differenza principale è:

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

Quindi, shell espande ~ solo in poche situazioni. Nel tuo caso, lo script python semplice ha ottenuto ~ all'interno dello script, non il valore espanso.


~ viene espanso SOLO se è il primo carattere di una parola E non è quotato

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

~username viene espanso a HOME del username .

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

Per citare i nomi dei file, dovresti usare $HOME o citare il suffisso

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

Nota quanto segue da "POSIX Tilde Expansion"

Il percorso risultante dall'espansione della tilde deve essere trattato come se fosse citato per evitare che venga alterato dalla divisione del campo e dall'espansione del percorso.


Linux
  1. Differenza tra shell di accesso e shell non di accesso?

  2. Differenza tra 2>&-, 2>/dev/null, |&, &>/dev/null E>/dev/null 2>&1?

  3. Qual è la differenza tra Sudo Su – e Sudo Su –?

  4. Differenza tra utente Sudo e utente root?

  5. Differenza tra Snat e Masquerade?

Differenza tra apt e apt-get spiegato

Differenza tra dimensione del blocco e dimensione del cluster?

Differenza tra tubazioni ed espansione dei comandi?

differenza tra netstat e ss in linux?

Differenza tra ${} e $() in Bash

differenza tra cgroup e namespace