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


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.