Bash - scl_devtool-9を実行してgcc --version出力を取得する方法

Bash - scl_devtool-9を実行してgcc --version出力を取得する方法

私のbashスクリプト:

#!/bin/bash

scl enable devtoolset-9 bash
gcc --version

結果:システムでdevtoolset-9が有効になりましたが、出力は出ませんgcc --version。 gcc 9.xxがインストールされました。と入力するように求められたら、scl enable devtoolset-9 bashシステムはdevtoolset-9を実行し、と入力してgccのバージョンを確認できましたgcc --version

Bashスクリプトを実行して取得する方法はgcc --version output

答え1

このscl enable ...コマンドは新しいシェルを生成します。これをテストした場合は、複数レベルのネストされたシェルが作成された可能性があります。これにより、基本システムの出力をexit表示できます。gcc --version同様のものとどれだけ深く入れ子になっているかを確認してくださいpstree -s $$

sclを使用して実行するには、gcc --version次の行にコマンドを入力しますscl

 scl enable devtoolset-9 'gcc --version'

引用:Red Hat 開発者ツールセット 9 ユーザーガイド(PDF).

答え2

スクリプトを必要な方法で実行するには、scl新しいセッションを作成するのではなく、現在のbashセッションを変更するコマンドが必要です。

あなたはこれを行うことができます

#!/usr/bin/env bash

# switch to GCC9 environment for the duration of the script
source scl_source enable devtoolset-9

gcc --version

関連情報