今天我从 Ubuntu 16.04 升级到 18.04 再升级到 20.04
登录后我收到错误
Error found when loading /etc/profile:
/etc/profile.d/modules.sh: line 6: usr/share/modules/init/sh: no such file or dicrectory
As a result the session will not be configured correctly.
You should fix the problem as soon as feasible
中的代码etc/profile.d/modules.sh
是:
shell=$(/usr/bin/basename $(/bin/ps -p $$ -ocomm=))
if [ -f /usr/share/modules/init/$shell ]; then
. /usr/share/modules/init/$shell
else
. /usr/share/modules/init/sh
fi
但
路径/usr/share/modules
不存在
剧本如何改编?
答案1
我在 VirtualBox 上全新安装了 ubuntu 20.04,并注意到该文件etc/profile.d/modules.sh
在全新安装中不存在。
因此我将文件重命名etc/profile.d/modules.sh
为etc/profile.d/modules.sh.ubuntu16.04
以免被执行
(/etc/profile.d/*.sh
其中的模式/etc/profile
不再匹配)
此后错误信息不再出现。
答案2
删除它
该/etc/profile.d/modules.sh
脚本是 Ubuntu LTS 以前版本的残留。可以安全删除。
$ sudo rm /etc/profile.d/modules.sh
这样做之后,错误信息将不再出现。
答案3
在我的系统上,使用
dpkg -S /etc/profile.d/modules.sh
表明文件/etc/profile.d/modules.sh
属于易于包裹environment-modules
。
使用命令显示依赖关系environment-modules
, 例如
apt-cache rdepends --installed environment-modules
apt -s remove environment-modules
aptitude why environment-modules
表明environment-modules
实际上其他软件包并不需要它,甚至也没有(完全)安装在我的系统上。
ls -rt /var/log/dpkg.log* | xargs zgrep install | less
ls -rt /var/log/dpkg.log* | xargs zgrep install | grep environment-modules
显示,从environment-modules
最近提及的所有日志条目来看,environment-modules
仅“安装了一半”。
事实上,使用dpkg -l | grep ^rc
(见1,2environment-modules
)表明apt-删除但尚未完全apt-清除。
environment-modules
因此,我得出结论,使用以下方法删除并清除包是安全的
apt remove environment-modules
apt purge environment-modules
这次清除确实/etc/profile.d/modules.sh
从我的系统中删除了文件。从那时起,我就摆脱了上述错误消息。