Cómo reemplazar mi nombre de usuario en un script con variable


9

Quiero hacer un script de instalación para la PC de mi casa y quiero que sea más flexible.

¿Cómo reemplazar mi nombre de usuario con la variable de usuario actual?

Ejemplo: descargar a: / home / THISUSER / Downloads /


2
Puede usar la variable $HOMEpara el hogar y $USERpara el usuario :)
— dadexix86

2
@ dadexix86 también puede publicar una respuesta. Esta pregunta es demasiado barata para perder el tiempo en los comentarios
— Sergiy Kolodyazhnyy

@Serg sí, pero estoy casi seguro de que es un duplicado, y estoy buscando el original :)
— dadexix86

Tenga en cuenta que la carpeta Descargas solo existe en los sistemas en inglés. Se pueden renombrar si el usuario elige una localización diferente.
— Byte Commander

la descarga fue solo por ejemplo. Los archivos se eliminarán después de la instalación. Pero gracias por la útil información
— FixXxeR

Respuestas:


21

Puede usar la variable $HOMEpara el hogar y $USERpara el usuario.

Su ejemplo puede ser $HOME/Downloadso /home/$USER/Downloads.


10
No todos los sistemas usan / home para directorios de inicio, por lo que la mejor práctica es usar $ HOME si hace referencia al directorio de inicio.
— Asmeurer

3
@asmeurer solo tratamos con Ubuntu y derivados oficiales. ¿Qué versión predeterminada no usa / home?
— Rinzwind

44
El hecho de que este sitio sea solo sobre Ubuntu no significa que deba evitar escribir código portátil y usar las mejores prácticas.
— Asmeurer

15

Si desea hacer esto, debe usar ...

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"

entonces eso sería

echo $(xdg-user-dir DOWNLOAD)

y mostrará la ubicación de descarga predeterminada (en mi caso /discworld/Downloads). Funciona para todas estas palabras. Me gusta ...

echo $(xdg-user-dir DESKTOP)

Esta es la forma universal real , siempre funciona :)
— Jacob Vlijm

Solo xdg-user-dir DOWNLOADsi quieres imprimirlo. : P
— kos

¿Qué hace morecuándo !isatty(stdin)?
— gato

@JacobVlijm Hay sistemas donde xdg-user-dirs no está instalado. Probablemente menos en Ubuntu, pero definitivamente es menos universal que usar $ HOME y $ USER.
— jazzpi

@jazzpi Dado que estamos en Ask Ubuntu , los directorios de usuarios anteriores dentro del alcance de la pregunta son universales, mientras que `$ HOME / Downloads` definitivamente no lo es.
— Jacob Vlijm
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.