使用程序调用屏幕时,屏幕环境变量不会传输



我想使用"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确实得到了处理。仔细想想,这是有道理的。

最新更新