如何在Red Hat Linux Shell脚本中获取指定用户的桌面文件夹

时间:2018-10-17 15:54:52

标签: linux shell

出于安装目的,我需要在当前计算机上找到Qvwm位用户的所有Linux桌面文件夹。

我有以下脚本:

HOMES=`getent passwd | cut -d: -f6`
SHORTCUT=/path/to/shortcut.desktop
find $HOMES -maxdepth 3 -name "Desktop" -exec cp $SHORTCUT {} \;

但是我知道用户桌面文件夹可能不同于“桌面”。

问题是:如何确定系统中所有/指定用户的桌面文件夹的正确路径。

感谢您的建议。

1 个答案:

答案 0 :(得分:2)

对于XDG Base Directory Specification之后且与xdg-user-dirs reference implementation兼容的任何桌面环境,其外观如下:

sudo -u "$user" -i bash -l <<'EOF'
  user_dirs_file=${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs
  [[ -s $user_dirs_file ]] && . "$user_dirs_file"
  printf '%s\n' "${XDG_DESKTOP_DIR:-$HOME/Desktop}"
EOF
  • 如果用户的点文件设置了XDG_CONFIG_HOME,则指定其主目录位置的配置文件将设置在这样命名的目录中;否则,文件存在于~user/.config中。
  • 如果$XDG_CONFIG_HOME/user-dirs.dirs存在并且包含对XDG_DESKTOP_DIR的分配,则该分配的结果将用作用户的桌面目录。
  • 如果不存在此类文件或不存在此类分配,则桌面目录应为$HOME/Desktop