仅对当前 shell 使用 update-alternatives

仅对当前 shell 使用 update-alternatives

我使用的是 Ubuntu 15.10,因此默认的 g++ 版本是 5.2.1。由于我需要经常将其更改为 4.7,因此我使用了 update-alternatives;但是,我注意到关闭终端时不会恢复默认编译器;这可能是一个问题,因为有可能混合使用不同编译器编译的代码。有没有办法强制 shell 在退出时恢复默认设置?谢谢您的建议。

编辑:我要感谢 the_Seppi 的宝贵帮助

答案1

备选方案系统仅在全球范围内有效。因此,您可以使用类似

trap 'sudo update-alternatives ....' EXIT

但是,这会要求您输入密码,并且还会重置所有其他活动 shell 的密码。所以我怀疑这不是你想要的。


我的建议:首先将替代方案重新设置为 g++ 的“默认”版本。在您的文件中创建类似以下内容~/.bashrc(或者不使用 bash 时,您的 shell 使用的任何内容):

function oldg++() {
    alias g++=/path/to/older/g++
}
function newg++() {
    unalias g++
}

因此现在您将默认使用较新的 g++,直到您运行命令,oldg++这将切换到当前会话的旧版本,或者直到您执行newg++,这会删除别名并因此切换回默认版本。

相关内容