【同样问题!!!】bash终端里 PATH 只有 /usr/sbin:/usr/bin:/sbin:/bin 了。还有更奇怪之处!
UOS专业版1070 X86_64,930 一次upgrade了201个包,然后打开终端 PATH 就变成这样了。系统回退就恢复原样了。
【不过话说回来,UOS的环境配置管理一直是一种非常“独特”的机制】这次升级出现PATH异常,原以为是修正“特殊”回归了现代linux配置管理机制,然而!稍加排查,发现并非如此!
1、奇怪1:从上手UOS,就发现PATH设置简直和windows机制一模一样:~/.profile、 /etc/profile 两个文件随便配置PATH,都能在非登录bash shell获得完整的PATH加载。【**这还是linux吗?这不是windows吗!**没搞明白,但觉得方便就一直盯着 /etc/profile 用了】
2、更奇怪2:这次升级后发现bash终端PATH没有了,查了一下~/.profile、/etc/profile 文件没被动过,由此以为是系统更新回归了现代linux配置管理机制。【但是,发现在非登录bash中 /etc/profile 仍然被加载了,其中JAVA_HOME、 MAVEN_HOME 等参数仍有效,只是PATH不知在哪被吃掉了。因此,机制未变!那又是为什么?】
如果仅是设置bash的完整PATH小事一桩,但以上奇怪之处,有没有人来解释一下。
【UOS终端PATH丢失真正原因似乎找到了】
实质是此次upgrade,改变了 deepin-terminal 拉起的过程,追踪upgrade前后的父进程如下:
更新前: systemd (PID 1) → lightdm → lightdm → **start_session.bash **→ startdde → deepin-terminal → bash
更新后: systemd (PID 1) → startdde → deepin-terminal → bash
更新后 systemd 直接拉起只会传递类似/usr/bin:/usr/sbin等最基本的默认PATH给子进程;更新前的一系列过程从登录终端获得完整PATH,并继承给后续进程直到 deepin-terminal。
参考 https://planet.deepin.org/en/page/11/ ,deepin官方博客早在2021年底已提出了“DDE 现在正在做 Wayland 的支持,所以我们需要对目前的桌面环境结构进行调整, 考虑到 GNOME 和 KDE 都已经使用 systemd 来管理 session,我认为 deepin 团队也可以考虑这一步了”。
看来是在这次upgrade中终于迈出了这一步。以后PATH的设置方式也就放心了。


中文 


UOS20 1070今日更新后一些软件不能用了 暂时发现三个 用AI解决了 AI报告供参考
问题一:fish的starship美化失效
症状
终端能正常使用,但提示符变回默认样式;直接敲
starship报command not found。根因链
~/.bashrc里原本是export PATH="/usr/local/bin:$PATH",后来被改成export PATH="/usr/bin/:$PATH"。新写法没有把/usr/local/bin加回去,而是把它挤掉了。/usr/local/bin的地方是/etc/profile,但只有登录 shell 才读它。交互式非登录 shell(终端默认行为、IDE 终端、脚本)不读 → PATH 里永久缺这一项。eval "$(starship init bash)"才接管提示符。本机只有 fish 的config.fish有这一行,bash / zsh 都没有。/etc/environment是空文件,/usr/lib/environment.d/99-environment.conf只是指向它的符号链接。凡由 systemd / D-Bus 激活的进程,PATH 落回 systemd 内置默认值,变得不可预测。修复
~/.local/bin/starship~/.bashrc:PATH 改为追加式export PATH="/usr/bin/:$PATH:/usr/local/bin";末尾加eval "$(starship init bash)"~/.zshrc同样补 init~/.config/fish/conf.d/00-path.fish:保证 fish 始终含/usr/local/bin(fish 不读/etc/profile)~/.config/environment.d/10-path.conf:补上 systemd 用户会话的 PATH(需重新登录生效)问题二:星火商店
启动器里看不到图标 找到原图标也运行不了 重装无效
根因:应用被整个踢出了列表
dde-daemon 扫描 desktop 文件时,若
Exec=的命令解析不到,它不报错、不占位,而是把应用从列表里整个丢掉。表现就是"图标不显示 / 应用像消失了"。而本机 dde-daemon 的 PATH 不含
/usr/local/bin修复:新建
~/.local/share/applications/spark-store.desktop,Exec 写绝对路径:[Desktop Entry]
Type=Application
Exec=/usr/local/bin/spark-store %u ← 关键:绝对路径,不依赖 PATH
Icon=spark-store
Name[zh_CN]=星火应用商店
StartupWMClass=spark-store
问题三:玲珑商店社区版一闪即关
症状
图标正常显示,能点击,但窗口一闪而过;退出码 134(SIGABRT)。
根因:Flutter 的渲染后端与图形栈不匹配
修复:改底层的 wrapper
/usr/bin/linglong-store本身就是一个三行的 bash 包装脚本:在里面加一行导出 —— 启动器、任务栏、终端、D-Bus 激活,所有入口一次生效:
不确定修复方式是否存在风险 但确实是都修好了 如果有问题请大佬们多提点