GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Unterschied zwischen $HOME und '~' (Tilde)?

Die Tilde ist Teil einer Shell-Erweiterung (wie in bash, csh, zsh usw.). Der $HOME Variable ist exportierbar und kann unabhängig von einer bestimmten Shell verwendet werden.


Die Shell ersetzt ~ mit dem Home-Verzeichnis des Benutzers (update :oder vielleicht durch das Heimatverzeichnis eines anderen Benutzers, wenn ~ etwas anderes als / folgt ), aber nur, wenn es das erste Zeichen eines Wortes ist.

--with-libmemcached=~ hat ~ nicht am Anfang, also lässt die Shell es in Ruhe.


Der Hauptunterschied ist:

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

Erweitern Sie die Shell also nur in wenigen Situationen. In Ihrem Fall hat das Python-Skript einfach ~ innerhalb des Skripts erhalten - nicht den erweiterten Wert.


~ wird NUR expandiert, wenn es das erste Zeichen eines Wortes ist UND nicht in Anführungszeichen steht

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

~username wird auf HOME erweitert des username .

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

Um Dateinamen in Anführungszeichen zu setzen, sollten Sie $HOME verwenden oder zitieren Sie das Suffix

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

Beachten Sie das Folgende aus "POSIX Tilde Expansion"

Der Pfadname, der sich aus der Tilde-Erweiterung ergibt, soll behandelt werden, als ob er in Anführungszeichen gesetzt wäre, um zu verhindern, dass er durch Feldaufteilung und Pfadnamen-Erweiterung geändert wird.


Linux
  1. Unterschied zwischen Login-Shell und Nicht-Login-Shell?

  2. Unterschied zwischen 2>&-, 2>/dev/null, |&, &>/dev/null und>/dev/null 2>&1?

  3. Was ist der Unterschied zwischen Sudo Su – und Sudo Su –?

  4. Unterschied zwischen Eot und Eof?

  5. Unterschied zwischen Gtk- und Qt-Anwendungen?

Unterschied zwischen apt und apt-get erklärt

Unterschied zwischen CLOCK_REALTIME und CLOCK_MONOTONIC?

Unterschied zwischen GNUWin32 und Cygwin

unterschied zwischen netstat und ss unter linux?

Unterschied zwischen ${} und $() in Bash

Unterschied zwischen Cgroups und Namespaces