我想使用“screen ”来调用程序(Matlab),但需要一些特定的环境变量。我已经在 .bashrc 中设置了所需的变量
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libharfbuzz.so
现在,当我启动 screen 时,变量就会被传输。初始化 screen 后:
/data/jasper$ echo $LD_PRELOAD
/usr/lib/x86_64-linux-gnu/libharfbuzz.so
然后当启动Matlab时,它就完美地工作了:
>> getenv('LD_PRELOAD')
ans =
/usr/lib/x86_64-linux-gnu/libharfbuzz.so
现在奇怪的是:当直接在单个 screen 命令中启动 Matlab 时,它不起作用:
screen matlab -nodisplay
来自 Matlab:
>> getenv('LD_PRELOAD')
ans =
''
出了什么问题以及为什么?
最佳答案
通过反复试验,我从在 .bashrc 中设置环境变量切换到在 .screenrc 中设置(使用 setenv
)。这有效。
显然,直接使用 screen 调用程序会绕过 bash,并且 .bashrc 不会被获取。相反,.screenrc 确实得到了处理。仔细想想,这是有道理的。
关于matlab - 使用程序调用 screen 时不传输 screen 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25748511/