如何获得给定的用户“桌面路径”

Lan*_*nes 4 linux fedora

如何获取给定用户桌面的路径?

我用过这个:

echo $(awk "NR==$(awk 'BEGIN {FS=":"} {print $3}' /etc/passwd | awk "/^$(id -u USERSNAMEHERE)$/ {print NR}")" /etc/passwd | awk 'BEGIN {FS=":"} {print $6}')/Desktop
Run Code Online (Sandbox Code Playgroud)

有没有更好的?

如果用户桌面的名称不是“桌面”怎么办?

谢谢!

ps:使用 Fedora 14,但是否有任何“通用”方法可以找出给定用户的桌面?

Mik*_*kel 6

试试xdg-user-dirs

该页面有一个适用于当前用户的示例:

test -f ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs && \
    source ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs
echo ${XDG_DESKTOP_DIR:-$HOME/Desktop}
Run Code Online (Sandbox Code Playgroud)

此外,如果您必须阅读/etc/passwd,最好使用 的输出getent passwd,因为某些用户数据可能存储在 NIS、LDAP 或其他一些数据库中。

结合它,它适用于名为 的用户USERSNAMEHERE

USER=USERSNAMEHERE
USERDIR=$(getent passwd $USER | cut -f 6 -d :)
USERDIRCONF=${XDG_CONFIG_HOME:-$USERDIR/.config}/user-dirs.dirs
test -f "$USERDIRCONF" && . "$USERDIRCONF"
echo "${XDG_DESKTOP_DIR:-$USERDIR/Desktop}"
Run Code Online (Sandbox Code Playgroud)