如何用变量替换脚本中的用户名


9

我想为家用PC制作一个安装脚本,并且想使其更加灵活。

如何用当前用户变量替换我的用户名?

示例:下载至:/ home / THISUSER / Downloads /


2
您可以将变量$HOME用于家庭和$USER用户:)
dadexix86

2
@ dadexix86您也可以发布答案。这个问题太便宜了,不能在评论中浪费时间
Sergiy Kolodyazhnyy

@Serg是的,但是我几乎可以肯定它是重复的,并且我正在寻找原始的一个:)
dadexix86

请注意,“下载”文件夹仅在英语系统上存在。如果用户选择其他本地化,则可以重命名它们。
字节指挥官

下载仅作为示例。安装后文件将被删除。但是感谢有用的信息
FixXxeR

Answers:


21

您可以将变量$HOME用于家庭和$USER用户。

您的示例可以是$HOME/Downloads/home/$USER/Downloads


10
并非所有系统都将/ home用于主目录,因此,最佳实践是在引用主目录时使用$ HOME。
asmeurer

3
@asmeurer我们只处理Ubuntu和官方衍生产品。哪个默认版本不使用/ home?
Rinzwind '16

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)

这是真正的通用方式,始终有效:)
Jacob Vlijm

只是xdg-user-dir DOWNLOAD,如果你想打印出来。:P
kos

什么时候more做什么!isatty(stdin)

@JacobVlijm在某些系统中未安装xdg-user-dirs。在Ubuntu下可能不是这样,但是它比使用$ HOME和$ USER通用性要差。
jazzpi

@jazzpi因为我们在Ask Ubuntu上,所以问题范围内的上述用户目录是通用的,而$ HOME / Downloads绝对不是。
Jacob Vlijm '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.