Come sostituire il mio nome utente in uno script con variabile


9

Voglio creare uno script di installazione per il mio PC di casa e voglio renderlo più flessibile.

Come sostituire il mio nome utente con la variabile utente corrente?

Esempio: download in: / home / THISUSER / Download /


2
Puoi usare la variabile $HOMEper la casa e $USERper l'utente :)
dadexix86

2
@ dadexix86 puoi anche inviare una risposta. Questa domanda è troppo economica per perdere tempo nei commenti
Sergiy Kolodyazhnyy

@Serg sì, ma sono quasi sicuro che sia un duplicato e cerco l'originale :)
dadexix86

Si noti che la cartella Download esiste solo su sistemi inglesi. Possono essere rinominati se l'utente ha scelto una localizzazione diversa.
Byte Commander

il download era solo per esempio. I file verranno eliminati dopo l'installazione. Ma grazie per le informazioni utili
FixXxeR

Risposte:


21

È possibile utilizzare la variabile $HOMEper la casa e $USERper l'utente.

Il tuo esempio può quindi essere $HOME/Downloadso /home/$USER/Downloads.


10
Non tutti i sistemi usano / home per le directory home, quindi la migliore pratica è usare $ HOME se si fa riferimento alla directory home.
asmeurer

3
@asmeurer ci occupiamo solo di Ubuntu e derivati ​​ufficiali. Quale versione predefinita non utilizza / home?
Rinzwind

4
Solo perché questo sito riguarda solo Ubuntu non significa che dovresti evitare di scrivere codice portatile e usare le migliori pratiche.
asmeurer

15

Se vuoi farlo, dovresti usare ...

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"

così sarebbe

echo $(xdg-user-dir DOWNLOAD)

e mostrerà il percorso di download predefinito (nel mio caso /discworld/Downloads). Funziona con tutte queste parole. Piace ...

echo $(xdg-user-dir DESKTOP)

Questo è il vero modo universale, funziona sempre :)
Jacob Vlijm

Solo xdg-user-dir DOWNLOADse vuoi stamparlo. : P
kos

Cosa fa morequando !isatty(stdin)?
gatto

@JacobVlijm Ci sono sistemi in cui xdg-user-dirs non è installato. Probabilmente meno su Ubuntu, ma è sicuramente meno universale dell'uso di $ HOME e $ USER.
jazzpi,

@jazzpi Dato che siamo su Ask Ubuntu , le directory degli utenti di cui sopra nell'ambito della domanda sono universali, mentre "$ HOME / Download" sicuramente non lo è.
Jacob Vlijm,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.