# 2021-01-18 #「GDM」- Oh no! Something has gone wrong error
问题描述
在安装 GDM 之后,启动u服务(systemctl start gdm3.service),此时显示错误信息:
Oh no! Something has gone wrong error
或者,在输入用户名与密码之后,不断的退到登录界面。
问题排查
修改/etc/gdm/custom.conf文件,加入如下行:
[debug] Enable=true
同时你还要启动 syslog 服务(该服务通常是默认启动的)。
然后重启 GDM 服务(systemctl restart gdm3.service),再次进行登录,此时日志将写入/var/log/message中。
问题原因
可能每个人原因都不相同。下面是我的个人原因:
在我的情景中,之所以无法登录,是因为:它在登录的时候,会执行$HOME/.profile文件,而文件中存在语法错误。准确的说是:与执行的Shell不兼容。
脚本的执行是由/etc/gdm3/Xsession触发的,所使用的Shell程序是/bin/sh(脚本第一行)。在我的环境中,它被软链接到/bin/bash命令。当Bash被软链接到sh后(即以sh调用),将进入「POSIX模式」。如果你的脚本不符合POSIX的规范,比如命名中存在非法字符,都会导致错误。
解决办法
正常讲应该调整脚本,使脚本符合POSIX规范。但是实际情况复杂:1)脚本多,工作量大;2)规范里的功能少,不能满足某些需要。
所以我的解决办法就是从POSIX模式中退出来:在脚本的第一行加入set +o posix命令,管理POSIX模式。
参考文献
- WikiNotes/Oh no! Something has gone wrong error
- GNOME HELP/Troubleshooting
- GNOME HELP/Configuration
- BASH MANUAL/6.11 Bash POSIX Mode
- How to disable an option with a bash script?