Bash scl启用访问源shell参数

Bash scl启用访问源shell参数,bash,shell,redhat,Bash,Shell,Redhat,我正在一个shell脚本中激活一个scl python环境,并希望根据参数定制安装VirtualEnvironment。但是,我无法将变量从shell/bash脚本传递到激活scl环境时创建的子shell中。如何访问shell/bash脚本中定义的参数 $ARG=argument scl enable rh-python36 << SS echo $ARG SS 我对scl一点也不熟悉,但我可以指出您正在做的shell部分的一些错误: 使用带有变量的$来获取它们的值,而不是在设

我正在一个shell脚本中激活一个scl python环境,并希望根据参数定制安装VirtualEnvironment。但是,我无法将变量从shell/bash脚本传递到激活scl环境时创建的子shell中。如何访问shell/bash脚本中定义的参数

$ARG=argument
scl enable rh-python36 << SS 
echo $ARG
SS

我对scl一点也不熟悉,但我可以指出您正在做的shell部分的一些错误:

  • 使用带有变量的
    $
    来获取它们的值,而不是在设置它们时。因此,
    $ARG=argument
    应该是
    ARG=argument
    。顺便说一句,您给出的错误消息实际上与此问题不匹配;它看起来更像是
    =
    (例如
    ARG=argument
    )周围的空格,这是不允许的,因为它将
    ARG
    视为命令,“
    =
    ”和“
    argument
    ”作为传递给它的参数。一般来说,空格是shell中重要的分隔符,添加或删除它们(即使在外观不重要的地方)可以完全改变命令的含义

  • 默认情况下,变量是shell本身的私有变量。要使变量可用于
    scl
    (以及在shell中运行的任何其他命令),您需要
    导出它。因此,您实际上想要:

    export ARG=argument
    
  • 我建议不要使用all caps变量名,因为有许多all caps名称具有特殊含义;将其中一个用于其他用途可能会产生奇怪的效果。小写和混合大小写变量名更安全

  • 在常规here文档中(包含
    
    
    export ARG=argument