gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:35:31 27 4
gpt4 key购买 nike

我有一个小问题——解决方法很简单,但我想了解问题存在的根本原因。我在 .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

对这种差异有解释吗?

最佳答案

如果您使用 system 检查进程树和 ps f在 Matlab 中运行命令,您会看到它实际上启动了 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

在这种情况下,在 .bashrc 中设置的变量可以通过 getenv 获得。当我从 bash 启动 Octave 时。但是当从菜单启动器启动 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 的导出未设置。

关于linux - MATLAB getenv 无法找到一些 linux 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21120296/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com