WSL/BASH calls from the system command

조회 수: 71 (최근 30일)
Hugo Zeberg
Hugo Zeberg 2018년 2월 10일
답변: Ankur Bose 2018년 9월 27일
Hi!
I have some linux software that I run using the Windows Subsystem for Linux (WSL) that I wish to execute from within MATLAB under Windows 10.
In the windows command prompt I can type, e.g., wsl ls.
But running the same command within MATLAB as
system('wsl ls')
does initally work (in this case shows the content of the folder) but then hangs. No 0 is returned that the command has executed successfully.
Any idea how to solve this?

답변 (3개)

Ankur Bose
Ankur Bose 2018년 9월 27일
Hello All, This was an issue with Windows 10 WSL that has been fixed in Windows 10 Build 17017. See the below link for more information
If you have Windows 10 Build greater than 17017 or Windows 10 April 2018 Update, you should not see this issue.
You can check your windows version by running the command winver

Matthias Senge
Matthias Senge 2018년 2월 12일
I have the same problem. My bash skript runs successfully, but no 0 is returned. Any help?
  댓글 수: 2
Hugo Zeberg
Hugo Zeberg 2018년 2월 12일
편집: Hugo Zeberg 2018년 2월 12일
I found a workaround, which is not that pretty but does work.
Call the JAVA runtime directly using
rt = java.lang.Runtime.getRuntime();
pr = rt.exec('wsl YOURCOMMAND');
pr.destroy();
Carlo Monjaraz
Carlo Monjaraz 2018년 4월 17일
I have the same issue, it requires me to press Enter to finish the command, which of course does not allow to run the scripts completely

댓글을 달려면 로그인하십시오.


Wei Feng
Wei Feng 2018년 5월 4일
I use the following codes to run bash in the MATLAB and it works.
% bashcmd = 'D:\cygwin64\bin\bash.exe -c ';
% bashcmd = 'D:\MinGW\msys\1.0\bin\bash.exe -c ';
bashcmd = 'bash -c '; % WSL
runcmd = ['"' cmd '"'];
status = system([bashcmd runcmd]);
if (status ~= 0)
error(['Run bash cmd error: ' num2str(status)]);
end
The bash can also be Cygwin or MinGW.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by