web-dev-qa-db-ja.com

現在のシェルだけにupdate-alternativesを使用する

Ubuntu 15.10を使用しているため、デフォルトのg ++​​バージョンは5.2.1です。頻繁に4.7に変更する必要があるため、update-alternativesを使用しています。ただし、ターミナルを閉じてもデフォルトのコンパイラは復元されないことに気付きました。異なるコンパイラでコンパイルされたコードを混在させる可能性があるため、これは問題になる可能性があります。終了時にシェルにデフォルト設定を強制的に復元する方法はありますか?アドバイスありがとうございます。

編集:the_Seppiの貴重な助けに感謝したい

2
Matteo S.

代替システムはグローバルにのみ機能します。したがって、次のようなものを使用できます

trap 'Sudo update-alternatives ....' EXIT

ただし、これはパスワードを要求し、他のすべてのアクティブなシェルのパスワードをリセットします。だから私はこれがあなたが望むものだとは思わない。


私の提案:最初に、代替をg ++の「デフォルト」バージョンに戻します。 ~/.bashrcファイル(またはbashを使用しない場合はシェルが使用するもの)に次のようなものを作成します。

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

したがって、コマンドoldg++を実行するまで、デフォルトで最新のg ++​​を使用します。これにより、現在のセッションの古いバージョンに切り替えられるか、newg++を実行して、エイリアスとしたがって、デフォルトバージョンに戻ります。

1
s3lph