我在使用 12.04 LTS 时遇到了一个奇怪的问题。
无论我对~/.config/user-dirs.dirs
文件做了什么,每当我下次再次登录时,该文件都会被设置为仅 $HOME。使用 lightdm 登录时会发生一些事情,从而覆盖该文件的内容。
如果我登录并执行 a,xdg-user-dirs-update --force
则文件内容正常。注销后,文件仍然正常。当我使用 lightdm 再次登录时,出现问题。
这很烦人。
答案1
存在自动启动脚本
/etc/xdg/autostart/user-dirs-update-gtk.desktop
它调用该程序xdg-user-dirs-gtk-update
,似乎没有man
页面或--help
解释,但我猜测可能是原因。
您可以删除该脚本(该脚本似乎属于包xdg-user-dirs-gtk
,如果更新可能会重新创建),或者Hidden=true
在自动启动文件中添加一行,这应该可以阻止它运行(并且应该询问您是否要在未来的任何更新中保留修改后的副本)。
答案2
通过谷歌搜索您的问题,我发现xdg-user-dirs
它可能是从Ubuntu 软件中心. 其声称具有以下特点:
该程序读取一个配置文件和一组默认目录。然后它在用户主目录中创建这些目录的本地化版本,并在 $(XDG_CONFIG_HOME)/user-dirs.dirs(XDG_CONFIG_HOME 默认为 ~/.config)中设置一个配置文件,应用程序可以读取该文件来找到这些目录。
完整文档可以在这里找到这里。
答案3
我建议检查以下几点:
- 尝试检查是否
XDG_CONFIG_HOME
设置为与“~/.config”不同的位置。- 在 shell 级别
- 通过
grep XDG_CONFIG_HOME /etc/*profile /etc/*rc ~/.*rc ~/.*profile /etc/X11/Xsession /etc/X11/Xsession.d/*
作为解决方法,使用符号链接标准和你的风俗目录名称。
例如
cd ${HOME}
function link() {
local dir=$1
shift 1
[ -e ${dir} ] || mkdir -p ${dir}
for name in $*
do
if [ -L ${name} ]
then
if [ "$(readlink ${name})" = "${dir}" ]
then
[ -e "${dir}" ] || mkdir -p "${dir}"
echo "${name} allready converted to ${dir}"
else
echo "${name} (link) converted to ${dir}"
[ -e "${dir}" ] || mkdir -p "${dir}"
mv -av ${name}/* ${dir}/ 2>/dev/null || true # can be emtpy
mv -av ${name}/.??* ${dir}/ 2>/dev/null || true # can be emtpy
rm -f ${name}
ln -svf ${dir} ${name}
fi
else
if [ -d ${name} ]
then
mv -av ${name}/* ${dir}/ 2>/dev/null || true # can be emtpy
mv -av ${name}/.??* ${dir}/ 2>/dev/null || true # can be emtpy
rmdir ${name}
ln -sv ${dir} ${name};
echo "${name} (dir) converted to ${dir}"
else
ln -sv ${dir} ${name};
echo "${name} linked to ${dir}"
fi
fi
done
}
# real DE EN
link ~/data/templates Vorlagen Templates
link ~/data/public Öffentlich Public
link ~/data/documents Dokumente Documents
link ~/data/music Musik Music
link ~/data/photo Bilder Pictures
link ~/data/video Videos
link ~/data/privat Privat
答案4
进行更改并保存文件后,但在重新登录之前,执行
echo "enabled=false" > ~/.config/user-dirs.conf
这将产生用户目录。会议这应该可以防止任何进一步的重置。