scl 启用访问源 shell 个参数
scl enable access source shell arguments
我正在 shell 脚本中激活 scl python 环境,并希望根据参数对 virtualenv 进行一些自定义安装。但是,我无法将 shell/bash 脚本中的变量传递到激活 scl 环境时创建的 subshell 中。我如何访问 shell/bash 脚本中定义的参数?
$ARG=argument
scl enable rh-python36 << SS
echo $ARG
SS
例如当我运行上面的脚本时,输出将是:
line 1: ARG: command not found
我对 scl 一点都不熟悉,但我可以指出一些你正在做的 shell 部分的错误:
将 $
与变量一起使用以 获取 它们的值,而不是在设置它们时。因此,$ARG=argument
应该是 ARG=argument
。顺便说一句,你给出的错误信息实际上与这个问题不符;它看起来更像是 =
周围的空格(例如 ARG = argument
),这是不允许的,因为它会将 ARG
视为命令,而“=
" 和 "argument
" 作为传递给它的参数。一般来说,空格是 shell 中的重要分隔符,添加或删除它们 - 即使在看起来不重要的地方 - 也可以完全改变命令的含义。
默认情况下,变量对 shell 本身是私有的。要使该变量可用于 scl
(以及您在 shell 中 运行 的任何其他命令),您需要 export
它。因此,你实际上想要:
export ARG=argument
我建议不要使用全部大写的变量名,因为有许多全大写的名称具有特殊含义;将其中一个用于其他用途可能会产生奇怪的效果。小写和混合大小写的变量名更安全。
在常规的 here-document 中(<< SS
打开的部分),shell 将在将文档发送到程序之前扩展 $variable
表达式。如果您希望将 $
表达式发送到程序以供 it 解释,您需要引用 here-doc 定界符(例如 << "SS"
),或反斜杠转义文档中的所有美元符号、反引号和反斜杠字符。
我正在 shell 脚本中激活 scl python 环境,并希望根据参数对 virtualenv 进行一些自定义安装。但是,我无法将 shell/bash 脚本中的变量传递到激活 scl 环境时创建的 subshell 中。我如何访问 shell/bash 脚本中定义的参数?
$ARG=argument
scl enable rh-python36 << SS
echo $ARG
SS
例如当我运行上面的脚本时,输出将是:
line 1: ARG: command not found
我对 scl 一点都不熟悉,但我可以指出一些你正在做的 shell 部分的错误:
将
$
与变量一起使用以 获取 它们的值,而不是在设置它们时。因此,$ARG=argument
应该是ARG=argument
。顺便说一句,你给出的错误信息实际上与这个问题不符;它看起来更像是=
周围的空格(例如ARG = argument
),这是不允许的,因为它会将ARG
视为命令,而“=
" 和 "argument
" 作为传递给它的参数。一般来说,空格是 shell 中的重要分隔符,添加或删除它们 - 即使在看起来不重要的地方 - 也可以完全改变命令的含义。默认情况下,变量对 shell 本身是私有的。要使该变量可用于
scl
(以及您在 shell 中 运行 的任何其他命令),您需要export
它。因此,你实际上想要:export ARG=argument
我建议不要使用全部大写的变量名,因为有许多全大写的名称具有特殊含义;将其中一个用于其他用途可能会产生奇怪的效果。小写和混合大小写的变量名更安全。
在常规的 here-document 中(
<< SS
打开的部分),shell 将在将文档发送到程序之前扩展$variable
表达式。如果您希望将$
表达式发送到程序以供 it 解释,您需要引用 here-doc 定界符(例如<< "SS"
),或反斜杠转义文档中的所有美元符号、反引号和反斜杠字符。