Як замінити моє ім'я користувача в сценарії зі змінною


9

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

Як замінити моє ім'я користувача поточною змінною користувача?

Приклад: завантажити в: / home / THISUSER / Завантаження /


2
Ви можете використовувати змінну як $HOMEдля дому, так і $USERдля користувача :)
dadexix86

2
@ dadexix86 ви також можете опублікувати відповідь. На це питання занадто дешево, щоб витрачати час на коментарі
Сергій Колодяжний

@ Серг так, але я майже впевнений, що це дублікат, і шукаю оригінал :)
dadexix86

Зауважте, що папка "Завантаження" існує лише в англійських системах. Вони можуть бути перейменовані, якщо користувач обрав іншу локалізацію.
Байт-командир

завантаження було лише для прикладу. Файли будуть видалені після встановлення. Але дякую за корисну інформацію
FixXxeR

Відповіді:


21

Ви можете використовувати змінну як $HOMEдля дому, так і $USERдля користувача.

Тоді вашим прикладом може бути $HOME/Downloadsабо /home/$USER/Downloads.


10
Не всі системи використовують / home для домашніх каталогів, тому найкращою практикою є використання $ HOME, якщо ви посилаєтесь на домашній каталог.
асмеурер

3
@asmeurer ми маємо справу лише з Ubuntu та офіційними похідними. Яку версію за замовчуванням не використовує / home?
Rinzwind

4
Тільки тому, що цей сайт стосується лише Ubuntu, це не означає, що вам слід уникати написання переносного коду та використання кращих практик.
асмеурер

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)

Це справжній універсальний шлях, завжди працює :)
Яків Влійм

Просто xdg-user-dir DOWNLOADякщо ви хочете роздрукувати його. : P
kos

Що moreробити коли !isatty(stdin)?
кіт

@JacobVlijm Є системи, де xdg-user-dirs не встановлений. Напевно, менше в Ubuntu, але це, безумовно, менш універсально, ніж використання $ HOME та $ USER.
джазпі

@jazzpi Оскільки ми працюємо на Ask Ubuntu , вказані вище каталоги користувачів в межах питання є універсальними, тоді як "$ HOME / Downloads", безумовно, це не так.
Яків Влійм
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.