Perplexing output from the system() command
显示 更早的评论
I am running R2106b on a Macbook Pro OS X Yosemite.
In a Terminal window (using bash shell), if I type
which which
I get the expected output
/usr/bin/which
and similarly
which psql
yields
/usr/local/bin/psql
All is well and good so far. But if I issue these same command from within MATLAB, using the system() command, I get output that perplexes me. As expected, when I type
[status cmdout] = system('which which')
I get
status =
0
cmdout =
'/usr/bin/which
'
But from
[status cmdout] = system('which psql')
I get
status =
1
cmdout =
0×0 empty char array
Finally, if I point directly to the known directory (which in my real application I would not know) ...
[status cmdout] = system('which /usr/local/bin/psql')
then the command is found
status =
0
cmdout =
'/usr/local/bin/psql
'
Does anyone have some insight into what is happening here? I am not a Unix expert by any means. But the whole thing seems to be a bit of a shell game. ;-)
(I can add the why I am doing this if needed, but I won't burden folks just yet.)
3 个评论
Lukas Krück
2017-6-23
Yeah, totally can sign this statement. Need an answer as well :(
Walter Roberson
2017-6-23
The causes are described below: when you start MATLAB from the icon, that is not a login shell so your shell setup files are not run and so your PATH environment variable does not include everything you might be expecting.
Jess Crawshaw
2020-4-28
Your answer below completely fixed my problems, thanks for this
采纳的回答
更多回答(1 个)
Nikunj Kothari
2017-1-25
0 个投票
Are you getting the same output if instead of using system(), you use the exclamation point? The following documentation link elaborates on how to properly run external commands and scripts:
类别
在 帮助中心 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!