问题描述
系统环境:
- 无法进入桌面
- 可以进入锁屏
- 输入密码后黑屏,并返回锁屏
- tty能进入
startx startx中部分软件无法打开
无法进入桌面最直接的错误,非常严重不可原谅。用户登陆输入密码,黑屏,然后回到用户登陆。
误导我的一个报错:

起初我认为是xdroid-server出毛病了,但是后来发现它无法启动,于是尝试使用startx来寻找错误。
tty如何进入
在锁屏页面使用Ctrl+Alt+F4,即可进入tty。
进入后输入用户名和用户密码。
进入startx进行debug
登陆好后使用startx进入。
后续操作使用tty执行startx展现。
大量的.desktop无法打开
执行code竟然出现Node.js的报错

打开code可以看到顶部的解释器选择,如果直接指定解释器,发现能够打开VSCode,说明不是可执行文件的错误。

指定解释器:

如果去掉code中的指定解释器行:

成功打开:

发现了Node.js
观察到VScode的解释器是/usr/bin/env sh
为什么不是/bin/sh或者/usr/bin/sh呢?
于是我尝试运行了/usr/bin/env发现!:

我天呢?这是什么道理?
问题解决
综上所述,我认为是/bin/env和/usr/bin/env被NodeJs覆写了,于是我决定删除/bin/env,然后重装coreutils问题解决:
1 | sudo rm /bin/env |
另外因为安装了gnome-tweaks和原来的某些东西有冲突,卸载后恢复原状:
1 | sudo apt remove gnome-tweaks |
总结
这是一个非常奇怪的问题,因为我的/bin/env被Node.js覆写了,导致大量依赖于/bin/env寻找环境的批处理无法运行,这才导致了桌面无法打开。
debug期间我干了: