首页 > 解决方案 > 如何禁用 devtoolset-8?

问题描述

我有一个执行命令的 bash 脚本

scl enable devtoolset-8 'echo -e "%__ld $(which ld)\n%__nm $(which nm)\n%__objcopy $(which objcopy)\n%__objdump $(which objdump)\n%__strip $(which strip)"'

完成组装后,我需要“关闭”gcc-8。

我怎样才能通过 bash 做到这一点?

标签: bashdevtoolsetgcc8

解决方案


您不需要在上述命令之后关闭任何“关闭”,它所做的只是打印主要 devtoolset 可执行文件的路径,例如

%__ld /opt/rh/devtoolset-8/root/usr/bin/ld
%__nm /opt/rh/devtoolset-8/root/usr/bin/nm
%__objcopy /opt/rh/devtoolset-8/root/usr/bin/objcopy
%__objdump /opt/rh/devtoolset-8/root/usr/bin/objdump
%__strip /opt/rh/devtoolset-8/root/usr/bin/strip

当您运行最常用的scl enable devtoolset-8 bash命令时,它会调用一个新的 bash 实例,您的$PATH环境变量中有一个附加路径,使所有开发工具现在都从新位置运行:

[user@hostname ~]$ echo $PATH
/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
[user@hostname ~]$ scl enable devtoolset-8 bash
[user@hostname ~]$ echo $PATH
/opt/rh/devtoolset-8/root/usr/bin:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
[user@hostname ~]$

“关闭” devtoolset 所需要的只是退出这个 bash 实例:

[user@hostname ~]$ exit
exit
[user@hostname ~]$ echo $PATH
/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
[user@hostname ~]$

推荐阅读