Bash/Tildeexpansion: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 32: Zeile 32:
Folglich kann man Dateinamen mit Tilden in Zuweisungen an PATH, MAILPATH und CDPATH verwenden, und die Shell weist den erweiterten Wert zu.
Folglich kann man Dateinamen mit Tilden in Zuweisungen an PATH, MAILPATH und CDPATH verwenden, und die Shell weist den erweiterten Wert zu.


; Beispiel
== Anwendungen ==
  $ export PATH="$PATH:~/testdir"
  $ export PATH="$PATH:~/testdir"


~/testdir wird zu $HOME/testdir erweitert.  
~/testdir wird zu $HOME/testdir erweitert.  


Wenn $HOME also /var/home/dirkwagner ist, wird das Verzeichnis /var/home/dirkwagner/testdir zum Inhalt der PATH-Variablen hinzugefügt.
Wenn $HOME also /home/user ist, wird das Verzeichnis /home/user/testdir der PATH-Variable hinzugefügt.


[[Kategorie:Bash:Expansionen]]
[[Kategorie:Bash:Expansionen]]

Version vom 30. Juli 2022, 11:27 Uhr

Tildeexpansion

Beginnt der Wert mit einer unmaskierten Tilde (~), wird versucht, diese zu substituieren.

  • Betrachtet werden alle der Tilde folgenden Zeichen bis zum ersten Schrägstrich (Slash).
  • Ergibt dies eine gültige Benutzerkennung, so expandiert der Ausdruck zum Heimatverzeichnis dieses Benutzers.
  • Folgt der Tilde unmittelbar der Schrägstrich, wird der Ausdruck durch den Inhalt der Variablen HOME ersetzt
  • ist diese nicht gesetzt, wird das Heimatverzeichnis des aktuellen Benutzers angenommen
Beispiel
$ var=~
$ echo $var
$ /home/user
$ var=~root/
$ echo $var
$ /root/

Alle Zeichen bis zum ersten nicht in Anführungszeichen gesetzten Schrägstrich (oder alle Zeichen, wenn es keinen nicht in Anführungszeichen gesetzten Schrägstrich gibt) werden als Tilde-Präfix betrachtet.

  • Wenn keines der Zeichen im Tilde-Präfix in Anführungszeichen steht, werden die Zeichen im Tilde-Präfix, die auf die Tilde folgen, als möglicher Anmeldename behandelt.

Ist dieser Anmeldename eine Nullzeichenkette, wird die Tilde durch den Wert der Shell-Variablen HOME ersetzt.

  • Wenn HOME nicht gesetzt ist, wird stattdessen das Heimatverzeichnis des Benutzers, der die Shell ausführt, verwendet.
  • Andernfalls wird das Tilde-Präfix durch das Home-Verzeichnis ersetzt, das dem angegebenen Login-Namen zugeordnet ist.

Wenn das Tilde-Präfix "~+" ist, ersetzt der Wert der Shell-Variablen PWD das Tilde-Präfix.

  • Ist das Tilde-Präfix "~-", wird der Wert der Shell-Variablen OLDPWD, sofern sie gesetzt ist, ersetzt.

Wenn die Zeichen nach der Tilde im Tilde-Präfix aus einer Zahl N bestehen, der wahlweise ein "+" oder ein "-" vorangestellt ist, wird das Tilde-Präfix durch das entsprechende Element aus dem Verzeichnisstapel ersetzt, wie es von dem mit den Zeichen nach der Tilde im Tilde-Präfix als Argument aufgerufenen dirs built-in angezeigt würde.

  • Wenn der Tilde-Präfix ohne Tilde aus einer Zahl ohne führendes "+" oder "-" besteht, wird "+" angenommen.

Wenn der Anmeldename ungültig ist oder die Tilde-Expansion fehlschlägt, wird das Wort unverändert gelassen.

  • Jede Variablenzuweisung wird auf nicht in Anführungszeichen gesetzte Tilde-Präfixe unmittelbar nach einem ":" oder "=" geprüft.
  • In diesen Fällen wird ebenfalls eine Tilde-Expansion durchgeführt.

Folglich kann man Dateinamen mit Tilden in Zuweisungen an PATH, MAILPATH und CDPATH verwenden, und die Shell weist den erweiterten Wert zu.

Anwendungen

$ export PATH="$PATH:~/testdir"

~/testdir wird zu $HOME/testdir erweitert.

Wenn $HOME also /home/user ist, wird das Verzeichnis /home/user/testdir der PATH-Variable hinzugefügt.