【发布时间】:2018-09-05 22:28:59
【问题描述】:
系统命令可以在 Matlab 上使用system() 语法运行。在unix环境下,matlab选择什么shell来执行系统命令? /etc/shells的第一个条目?可以更改默认行为吗?我正在寻找一种适用于所有系统调用的通用解决方案,而不是像system('/bin/ksh <command>') 那样涉及使用感兴趣的外壳分叉子进程的解决方案。
【问题讨论】:
标签: matlab
系统命令可以在 Matlab 上使用system() 语法运行。在unix环境下,matlab选择什么shell来执行系统命令? /etc/shells的第一个条目?可以更改默认行为吗?我正在寻找一种适用于所有系统调用的通用解决方案,而不是像system('/bin/ksh <command>') 那样涉及使用感兴趣的外壳分叉子进程的解决方案。
【问题讨论】:
标签: matlab
正如document 所说,
在 UNIX 上,MATLAB 使用 shell 程序来执行给定的命令。它通过检查系统上的环境变量来确定使用哪个 shell 程序。 MATLAB 首先检查 MATLAB_SHELL 变量,如果为空或未定义,则检查 SHELL。如果 SHELL 也为空或未定义,则 MATLAB 使用 /bin/sh。
MATLAB 的系统命令使用 MATLAB_SHELL 或 SHELL,或 /bin/sh。您可以通过设置环境变量 MATLAB_SHELL 或 SHELL 来更改默认 shell。
例如选择MATLAB_SHELL,在启动MATLAB之前,需要设置
setenv MATLAB_SHELL /bin/ksh
在 csh 中,tcsh.Or,
export MATLAB_SHELL="/bin/ksh"
在 bash 中。
然后,MATLAB 将使用 /bin/ksh 和系统命令。
如果你每次都使用/bin/ksh,最好在你的~/.bashrc中设置MATLAB_SHELL等等。
【讨论】: