在bash中使用bash -c ""源Bash脚本

4

我正在尝试在bash -c "..."命令内部引用一个bash脚本,但是它不起作用。

如果我在bash -c "..."之外运行该命令,则可以正常工作。

我需要使用bash -c "...",因为我想确保人们使用的是Bash(而非sh、tcsh等)。

正常工作:

bash> source /neuro/arch/scripts/neuro-fs stable;echo $XAPPLRESDIR;
/neuro/arch/x86_64-Linux/packages/matlab/MATLAB_Compiler_Runtime/current/X11/app-default

无法工作:

bash> bash -c "source /neuro/arch/scripts/neuro-fs stable;echo $XAPPLRESDIR;"

在Bash脚本中,我们将XAPPLRESDIR定义为以下内容:
export XAPPLRESDIR=/neuro/arch/x86_64-Linux/packages/matlab/MATLAB_Compiler_Runtime/current/X11/app-defaults

在脚本开头加上或不加上#!/bin/bash似乎没有任何区别。
在这种情况下,使用export是不是一种“不好”的做法?
1个回答

3
在执行"bash -c"之前,变量扩展已经完成了;你需要像这样做:
bash -c "source /neuro/arch/scripts/neuro-fs stable;echo \$XAPPLRESDIR;"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接