卸载 rpm 时从 PATH 中删除条目

remove entries from PATH while uninstalling rpm

为了让系统保持更干净的状态,我试图从我的 rpm 规范文件的 %preun 部分的 PATH 中删除条目。

我在 Whosebug 上发现了几个我试过的线程

What is the most elegant way to remove a path from the $PATH variable in Bash?Linux: Remove path from $PATH variable

当我在终端上手动 运行 时,这两个链接中的答案都能完美运行。 但是,当我 运行 rpm -e xx 命令时它们不起作用。 如果安装成功后我的 PATH 看起来像这样:

    /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/lpp/mmfs/bin

我正在尝试删除 /usr/lpp/mmfs/bin、

rpm 卸载后 PATH 如下所示:

    /sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin

问题: 1) 当前面链接中提到的命令来自规范文件 运行 时,我是否需要做一些不同的事情?

2) 在 rpm 卸载期间删除 PATH 条目的一些推荐方法是什么?

备注 我在规范文件中尝试过的命令是:

PATH=$(echo $PATH | sed -e 's;:\?/home/user/bin;;' -e 's;/home/user/bin:\?;;')

PATH=${PATH/:\/home\/user\/bin/}

RPM %preun 脚本 不能 影响任何 运行 shell 的 PATH 变量。那是不可能的。

它也不能(直接)影响任何新 shell 的 PATH 变量。

它唯一能做的就是删除它对系统(或用户 shudder)所做的任何更改 shell 导致 PATH 的启动文件要添加的变量。

删除这些更改将导致任何新的 shell 不进行这些更改,因此也不会有那些额外的 PATH 条目。

添加到 PATH 的正确方法(随后,稍后将其删除)是在 /etc/profile.d 中删除文件 yourpackage.shyourpackage.csh

我也同意其他人的看法,这可能是个坏主意,但如果您需要这样做,我会这样做。