我的 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 ...
命令创建一个新的 shell;如果您对此进行过测试,那么您可能最终得到了几层嵌套的 shell。如果您这样做exit
,您可能会看到gcc --version
基本系统的输出。看看你与类似的东西嵌套得有多深pstree -s $$
。
要使用 scl 运行gcc --version
,只需将命令放在该scl
行:
scl enable devtoolset-9 'gcc --version'
参考:红帽开发者工具集 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