我想使用"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 =
''
出了什么问题,为什么?
经过反复试验,我从在.bashrc中设置环境变量切换到在.screenrc中设置它(使用setenv
)。这起到了作用。
显然,直接使用屏幕调用程序会绕过bash和.bashrc,并没有获得源代码。相比之下,.screenrc确实得到了处理。仔细想想,这是有道理的。