我想使用' screen'调用程序(Matlab)但具有一些特定的环境变量。我在.bashrc中设置了所需的变量
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libharfbuzz.so
现在,当我开始屏幕时,传输变量。初始化屏幕后:
/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
现在奇怪的一点:当在单个屏幕命令中直接启动Matlab时,它不起作用:
screen matlab -nodisplay
来自Matlab的:
>> getenv('LD_PRELOAD')
ans =
''
出了什么问题,为什么?
答案 0 :(得分:1)
通过反复试验,我从设置.bashrc中的环境变量切换到.screenrc中的设置(使用setenv
)。这很有效。
显然,使用屏幕直接调用程序会绕过bash而.bashrc不会被获取。相比之下,.screenrc确实得到了处理。当你想到它时,这是有道理的。