Vielleicht nicht programmierbezogen, aber ich möchte dieses Verzeichnis in c program referenzieren.
Ich dachte, es ist $ HOME, aber wenn ich $ HOME deaktiviere, kann ich immer noch cd ~ / in bash.
Es ist auch nicht das Haus von $ USER, da ich mit USER = "another" root sein kann, aber das "~ /" zeigt immer noch auf "/ root".
Wie erklärt Bash dieses "~ /"?
Antworten:
Wenn Sie versuchen, das String-Literal "~ /" in C zu öffnen, werden Sie feststellen, dass es nicht existiert. Es handelt sich um eine Bash / Csh-Kurzschreibweise, die von der Shell in das Ausgangsverzeichnis erweitert wird. Es existiert nicht als solches im Dateisystem und daher schlägt ein C-Programm fehl, es sei denn, es ruft beispielsweise Bash auf und ermöglicht Bash, die Zeichenfolge zu erweitern.
quelle
Verwenden der Home-Verzeichnis-Informationen aus / etc / passwd (6. Feld).
quelle
Es ist
$HOME
, aber es ist Wert zu ändern nicht Expansion bewirken. Weitere Informationen finden Sie unter diesem Link .quelle
Bash Hackers Wiki - Dokumentation - Tilde-Erweiterung :
quelle
~ wird von der Shell als Ausgangsverzeichnis interpretiert. es ist ein "Schlüsselwort"
quelle