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 /

FixXxeR
quelle
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.

dadexix86
quelle
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)
Rinzwind
quelle
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