私の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