dscl命令中断登录



我正在尝试使用这些dscl命令更改照片帐户的用户图像:

sudo dscl . delete /Users/photo Picture
sudo dscl . delete /Users/photo JPEGPhoto
sudo dscl . create /Users/photo Picture "/Library/User Pictures/Halloween.psd"
sudo dscl . create /Users/photo JPEGPhoto "/Library/User Pictures/Halloween.psd"

之后,我清除缓存并杀死cfprefsd,像这样:

sudo killall cfprefsd
sudo kextcache -system-caches

我已经运行这个没有杀死/清除,与相同的结果,这是…

运行这些命令后,当我登出时,一个风车出现在黑色背景上,我仍然可以看到我的光标,但随后显示器变黑,没有光标。

这个过程一直重复,直到硬关闭完成。即使在重新启动后也无法重新登录,因为我永远无法进入登录屏幕。

我试着复制香草loginwindow prefs文件,并在登录屏幕搞砸后替换它。我试图启动到安全模式,但正常启动似乎发生。当我以详细模式启动时,它会到达登录前的同一点。只有在冗长模式下启动时,屏幕才会随着登录背景闪烁,但随后会回到循环,这似乎正在执行更多代码(它看起来无关紧要,如Wi-Fi设置等)

机器上的信息是无关的,所以我不需要备份或恢复机器作为我的解决方案的一部分。

编辑:

我现在明白了……
 sudo dscl . create /Users/photo Picture "/Library/User Pictures/Halloween.psd"

没有任何作用。运行命令后,我回读属性,它仍然在那里。什么好主意吗?

编辑2:

对于其他面临这个问题的人来说,解决方案是添加:

sudo dscl . -read /Users/photo JPEGPhoto

后删除JPEGPhoto键,它的工作完美!

JPEGPhoto属性不应该是文件路径,它需要是十六进制编码的JPEG图像。看一下另一个帐户的JPEGPhoto属性,以了解它应该是什么样子。