matlab linux 环境变量,MATLAB getenv无法找到一些linux环境变量

我有一个小问题 – 解决方法很简单,但我想知道问题存在的原因.我在.bashrc中设置了一些环境变量:

export FREESURFER_HOME=/usr/local/freesurfer

在我的startup.m文件中,我尝试设置变量:

freesurfer_home=getenv('FREESURFER_HOME');

但是,对getenv的这个调用返回一个空字符数组.在MATLAB中调用getenv会返回一些环境变量(例如,getenv(‘HOME’))而不是其他环境变量.我可以从以下行看到MATLAB可以看到哪些环境变量:

map = java.lang.System.getenv();

我还可以使用任何一个来确认缺失值是否可见,至少在shell中是可见的

export

env

printenv

这种差异有解释吗?

最佳答案 如果在Matlab中使用

system和

ps f命令检查进程树,您将看到它实际启动sh并在那里执行您的命令.我没有Matlab,与Octave一样.

octave:1> system("ps f")

PID TTY STAT TIME COMMAND

2520 pts/0 Ss 0:00 bash

2580 pts/0 Sl+ 0:02 \_ octave

2885 pts/0 S+ 0:00 \_ sh -c ps f

2886 pts/0 R+ 0:00 \_ ps f

ans = 0

在这种情况下,当我从bash启动octave时,.bashrc中设置的变量可以通过getenv获得.但是当从菜单启动器启动Matlab时,情况就不同了:

octave:1> system("ps f")

PID TTY STAT TIME COMMAND

3400 pts/2 Ssl+ 0:01 /usr/bin/octave

3444 pts/2 S+ 0:00 \_ sh -c ps f

3445 pts/2 R+ 0:00 \_ ps f

bash尚未执行,并且未设置.bashrc的导出.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值