我使用的是 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++
,这会删除别名并因此切换回默认版本。