So ersetzen Sie meinen Benutzernamen in einem Skript durch eine Variable


9

Ich möchte ein Installationsskript für meinen Heim-PC erstellen und es flexibler gestalten.

Wie ersetze ich meinen Benutzernamen durch die aktuelle Benutzervariable?

Beispiel: Download nach: / home / THISUSER / Downloads /


2
Sie können die Variable $HOMEfür zu Hause und $USERfür den Benutzer verwenden :)
— dadexix86

2
@ dadexix86 Sie können auch eine Antwort posten. Diese Frage ist viel zu billig, um Zeit in den Kommentaren zu verschwenden
— Sergiy Kolodyazhnyy

@Serg ja, aber ich bin fast sicher, dass es ein Duplikat ist, und ich suche das Original :)
— dadexix86

Beachten Sie, dass der Ordner "Downloads" nur auf englischen Systemen vorhanden ist. Sie können umbenannt werden, wenn der Benutzer eine andere Lokalisierung gewählt hat.
— Byte Commander

Download war nur zum Beispiel. Dateien werden nach der Installation gelöscht. Aber danke für die nützlichen Infos
— FixXxeR

Antworten:


21

Sie können die Variable $HOMEfür zu Hause und $USERfür den Benutzer verwenden.

Ihr Beispiel kann dann $HOME/Downloadsoder sein /home/$USER/Downloads.


10
Nicht alle Systeme verwenden / home für Home-Verzeichnisse. Daher empfiehlt es sich, $ HOME zu verwenden, wenn Sie auf das Home-Verzeichnis verweisen.
— Asmeurer

3
@asmeurer beschäftigen wir uns nur mit Ubuntu und offiziellen Derivaten. Welche Standardversion verwendet / home nicht?
— Rinzwind

4
Nur weil es auf dieser Website nur um Ubuntu geht, heißt das nicht, dass Sie es vermeiden sollten, tragbaren Code zu schreiben und Best Practices zu verwenden.
— Asmeurer

15

Wenn Sie dies tun möchten, sollten Sie ...

more ~/.config/user-dirs.dirs
# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
# 
XDG_DESKTOP_DIR="/discworld/Desktop"
XDG_DOWNLOAD_DIR="/discworld/Downloads"
XDG_TEMPLATES_DIR="/discworld/Templates"
XDG_PUBLICSHARE_DIR="/discworld/Public"
XDG_DOCUMENTS_DIR="/discworld/Documents"
XDG_MUSIC_DIR="/discworld/Music"
XDG_PICTURES_DIR="/discworld/Pictures"
XDG_VIDEOS_DIR="/discworld/Videos"

so wäre das

echo $(xdg-user-dir DOWNLOAD)

und es wird der Standard-Download-Speicherort angezeigt (in meinem Fall /discworld/Downloads). Funktioniert für alle diese Wörter. Mögen ...

echo $(xdg-user-dir DESKTOP)

Dies ist der wirklich universelle Weg, funktioniert immer :)
— Jacob Vlijm

Nur xdg-user-dir DOWNLOADwenn Sie es drucken möchten. : P
— kos

Was macht morewann !isatty(stdin)?
— Katze

@JacobVlijm Es gibt Systeme, auf denen xdg-user-dirs nicht installiert ist. Wahrscheinlich weniger unter Ubuntu, aber es ist definitiv weniger universell als die Verwendung von $ HOME und $ USER.
— Jazzpi

@jazzpi Da wir auf Ask Ubuntu sind , sind die Verzeichnisse der oben genannten Benutzer im Rahmen der Frage universell, während "$ HOME / Downloads" dies definitiv nicht ist.
— Jacob Vlijm
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.