Как заменить мое имя пользователя в скрипте на переменную

9

Я хочу сделать скрипт установки для моего домашнего ПК и сделать его более гибким.

Как заменить мое имя пользователя текущей переменной пользователя?

Пример: загрузить в: / home / THISUSER / Загрузки /

FixXxeR
источник
2
Вы можете использовать переменную как $HOMEдля дома, так и $USERдля пользователя :)
dadexix86
2
@ dadexix86 вы также можете опубликовать ответ. Этот вопрос слишком дешев, чтобы тратить время на комментарии
Сергей Колодяжный,
@ Serg да, но я почти уверен, что это дубликат, и я ищу оригинальный :)
dadexix86
Обратите внимание, что папка «Загрузки» существует только в английских системах. Они могут быть переименованы, если пользователь выбрал другую локализацию.
Byte Commander
загрузка была только для примера. Файлы будут удалены после установки. Но спасибо за
полезную

Ответы:

21

Вы можете использовать переменную как $HOMEдля дома, так и $USERдля пользователя.

Ваш пример может быть $HOME/Downloadsили /home/$USER/Downloads.

dadexix86
источник
10
Не все системы используют / home для домашних каталогов, поэтому рекомендуется использовать $ HOME, если вы ссылаетесь на домашний каталог.
asmeurer
3
@asmeurer мы имеем дело только с Ubuntu и официальными производными. Какая версия по умолчанию не использует / home?
Rinzwind
4
Тот факт, что этот сайт посвящен только Ubuntu, не означает, что вам следует избегать написания переносимого кода и использования передового опыта.
asmeurer
15

Если вы хотите сделать это, вы должны использовать ...

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"

так что будет

echo $(xdg-user-dir DOWNLOAD)

и он покажет местоположение загрузки по умолчанию (в моем случае /discworld/Downloads). Работает для всех этих слов. Подобно ...

echo $(xdg-user-dir DESKTOP)
Rinzwind
источник
Это настоящий универсальный способ, всегда работает :)
Джейкоб Влейм
Просто xdg-user-dir DOWNLOADесли вы хотите распечатать его. : P
kos
Что moreделать, когда !isatty(stdin)?
кот
@JacobVlijm В некоторых системах xdg-user-dirs не установлен. Вероятно, меньше, чем в Ubuntu, но он определенно менее универсален, чем использование $ HOME и $ USER.
Jazzpi
@jazzpi Так как мы находимся в Ask Ubuntu , указанные выше каталоги пользователей в рамках вопроса универсальны, а `$ HOME / Downloads" определенно нет.
Джейкоб Влейм