我尝试在MATLAB中自动化mac终端调用。在我的特定用例中,我使用brew安装了cmake,但在MATLAB中无法识别cmake [~,result] = system('cmake ..');
返回zsh:1: command not found: cmake
使用下面的代码,我确信我可以更新路径,以便识别cmake。(Mac,Matlab,bash) Changing the PATH of bash in Matlab for system commands
然而,我想知道是否有一种通用的方法来模仿终端看到的路径。
特别是当我在终端中运行env
和在MATLAB中使用[~,result] = system('env');
时,路径变量是不同的,我想知道为什么会这样,以及如何确保它们一致。
1条答案
按热度按时间hc2pp10m1#
当您在macOS上从图标启动MATLAB时,您不会运行登录shell启动文件,因此您的大部分配置都不会被加载。也就是说,在
~/.zprofile
、~/.zshrc
等中配置的任何内容都不会被MATLAB看到。与其他Unix不同,macOS在您登录时不会启动登录shell。请参阅here以了解登录shell和非登录shell之间的区别。解决这个问题的一种方法是从终端窗口启动MATLAB,另一种方法是在运行shell命令之前手动加载zsh配置。
一个更干净的解决方案是避免
~/.zprofile
(为登录shell加载)和~/.zshrc
(为交互shell加载),而是将您的配置放在~/.zshenv
中(为所有shell加载,包括由MATLAB为system()
或!
启动的shell)。特别是,自制啤酒添加了一条线
将这一行移到
~/.zshenv
并重新启动MATLAB应该会将Homebrew配置添加到从MATLAB内部启动的shell中。