系统命令可以使用system()
语法在Matlab上运行。在UNIX环境中,matlab选择哪种外壳来执行系统命令? /etc/shells
的第一个条目?可以更改默认行为吗?我正在寻找一种通用解决方案,该解决方案将应用于所有系统调用,而不是像system('/bin/ksh <command>')
中那样涉及使用感兴趣的shell派生子进程的解决方案。
答案 0 :(得分:1)
正如document 所说,
在UNIX上,MATLAB使用Shell程序执行给定命令。它通过检查系统上的环境变量来确定要使用的Shell程序。 MATLAB首先检查MATLAB_SHELL变量,如果为空或未定义,则检查SHELL。如果SHELL也为空或未定义,则MATLAB使用/ bin / sh。
MATLAB的系统命令使用MATLAB_SHELL或SHELL或/ bin / sh。您可以通过设置环境变量MATLAB_SHELL或SHELL来更改默认外壳。
例如,如果选择MATLAB_SHELL,则在启动MATLAB之前,需要设置
setenv MATLAB_SHELL /bin/ksh
在csh,tcsh中,或
export MATLAB_SHELL="/bin/ksh"
以bash播放。
然后,MATLAB将在系统命令中使用/ bin / ksh。
如果每次都使用/ bin / ksh,最好在〜/ .bashrc中设置MATLAB_SHELL,以此类推。