Bash/Tildeexpansion: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 3: | Zeile 3: | ||
* Betrachtet werden alle der Tilde folgenden Zeichen bis zum ersten Schrägstrich (Slash). | * 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. | * 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 | |||
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=~ | $ var=~ | ||
$ echo $var | $ echo $var | ||
Zeile 12: | Zeile 13: | ||
$ /root/ | $ /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. | |||
; Beispiel | |||
$ export PATH="$PATH:~/testdir" | |||
~/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. | |||
[[Kategorie:Bash:Expansionen]] | [[Kategorie:Bash:Expansionen]] |
Version vom 30. Juli 2022, 11:24 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.
- Beispiel
$ export PATH="$PATH:~/testdir"
~/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.