Hallo, $HOME/ = /home/michae1/ =/home/USER/ =~
Gut, das scheint ja zu stimmen. Aber wie bewirkt das § am Anfang, dass man §HOME auch beliebig anders schrieben kann, z.B. auch §homE oder §Home.
Frage, warum spiel hier im Terminal die Groß-, bzw. Kleinschreibung keine Rolle mehr?
Ja, war ein Tippfehler, es sollte natürlich ein $ sein.
Das mit der Variable verstehe ich gar nicht, hoffe es vorläufig auch nicht zu brauchen.
Aber probiere es mal aus. Die Groß- und Kleinschreibung spielt da offensichtlich keine Rolle.
Auch das hier wundert mich:
cd $HOME = cd $home = $h - das ist alles das Gleiche, nämlich ~
aber nicht durchgehend konsistent, denn: /home/USER/ != $HOME/
/home/USER wird häufig in Anleitungen und Beschreibungen verwendet
mit dem beim Leser implizierten Verständnis, daß “USER” für den tatsächlichen Benutzernahmen steht
Auf die Weise kann man auch sicherstellen, daß einfaches copy/paste nicht direkt katastrophale Auswirkungen hat,
denn /home/USER gibt es nicht tatsächlich und solche Kommandos werden immer fehlschlagen - USER steht immer für den tatsächlichen Nutzernamen
das war mir tatsächlich neu - ist mir noch nie aufgefallen
obwohl echo $home
nichts zurückgibt
während echo $HOME
das tatsächliche Heimatverzeichnis als Antwort liefert
Hallo Nachlese,
natürlich meine ich bei /home/USER mit USER meinen Benutzername. Wie schreibt man [USER] wenn es nur der Stellvertreter für den richtigen Namen sein soll?
Und was meinst Du mit nicht konsistent?
aber nicht durchgehend konsistent, denn:
/home/USER/ != $HOME/
Dann weiß eigentlich jeder, daß der tatsächliche Name gemeint ist
Man kann sich natürlich auch noch extra sprachlich/schriftlich verrenken um ganz besonders klar zu kommunizieren
und z.B. /home/your_username oder sowas schreiben …
Ich versuchs nochmal: $HOME ist eine Variable, die im Klartext und für das Betriebssystem bzw. die shell auf das Heimatverzeichnis des Benutzers verweist
/home/USER sagt weder der shell noch dem Betriebssystem etwas - das ist etwas, was für Menschen gedacht ist, die Beschreibungen/Anleitungen lesen
nicht obwohl… cd $home
ist das gleiche wie nur cd
weil $home ein leerer String ist (wie Du schon geschrieben hattest).
Mach mal die Gegenprobe: cd $xyz
da wanderst Du auch ins Homeverzeichnis, aus dem gleichen Grund.
Das erklärt mir, warum ich HOME schreiben kann wie ich will. Das heißt, wenn ich cd $ schreibe, dann muss nur noch irgend ein Buchstabe hinter das $ und schon bin ich im ~, ganz gleich welche Buchstaben und ob groß oder klein.
Ich frage ja deshalb, weil ich meine Notizen über das Installieren eines Windows-Programms über Wine und das Terminal besser verstehen möchte. Da habe ich z.B. diese Einträge:
naja, nicht ganz. Es macht wenig Sinn, in einem Skript $home zu verwenden, nur um einen leeren String zu erhalten, aber das meinst Du wahrscheinlich auch nicht.
Aber
Hallo gosia,
ich möchte in meine Aufzeichnungen Platz sparen und ich möchte das, was ich in diesem Forum gelernt habe, also diese Aufzeichnungen verstehen lernen. Es ist meine Art, das neue Wissen zu vertiefen.
/home/USER-NAME, bzw. /home/michae1/ verstehe ich ja, auch diese Tiled: ~.
Und deshalb dieser Versuch, meine Notizen zu vereinfachen.
Sind beide folgenden Befehle auch identisch? (müsste ja so sein).
allerdings gibt es bei der Verwendung der Tilde ~ auch Fallstricke, wenn z.B. Quoting ins Spiel kommt. echo "$HOME"
gibt z.B. bei mir /home/gn
zurück, aber echo "~"
gibt nur ~
nicht das, was man möchte.
Ausführlicher kannst Du das hier nachlesen https://mywiki.wooledge.org/BashPitfalls#echo_.22.2BAH4.22
und noch ausführlicher und quasi “amtlich”, jedoch komplizierter hier
Das ist eine Quälerei für mich, fast wie Chinesisch, weil in jedem Satz viele Begriffe stehen, die ich nicht kenne.
Aber weil Du Dir die Mühe gemacht hast, habe ich mir auch welche gemacht und lese trotzdem. Dabei stolpere ich auf folgendes: Quoting path parameters that are expressed relative to a user’s home directory should be done using $HOME rather than ‘~’.
Also sind beide Ausdrücke doch nicht gleich?
Zurück zu meiner Frage:
Wenn ich im Terminal Programme über Wine installiere, welcher Ausdruck ist da der beste:
$HOME
~
/home/michae1
(Ich mache aber für heute Schluss, bin gespannt, was ich morgen zu leben bekomme. Danke an Euch).
um Himmelswillen, Du musst das nicht sofort und auf einmal studieren. In 99% aller Fälle funktioniert das schon mit der Tilde. Aber mit $HOME bist Du eben auf der sicheren Seite, zumindest wenn Du mal Shell-Skripte schreibst. Und der Schwerpunkt bei dem Zitat
liegt eben auf “Quoting”
was ja durchaus bei solchen Verzeichnisnamen wie “/home/gn/meine Fotos/” (mit Leerzeichen!) die vor allem manchmal bei Ex-Windows-Usern beliebt sind notwendig sein kann.
Insofern meine persönliche Antwort auf deine Frage