system('wsl sudo ...') does not work

Hi, i'm trying to write a script that executes a few command through wsl on Windows (basically to automatic install libraries from apt and a c++ routine with ./configure and make).
When I use command such as
system('wsl ./configure')
it goes well, but when I use some like
system('wsl sudo apt-get install')
the script runs but never ends (I see always the "pause" button).
Any suggestions on how to fix this? Thanks

4 个评论

You should make sure your system calls avoid interacting with the user. You should also treat each call to system as a different shell (so don't use cd in one and assume that folder in a second call).
I suspect the first one is biting you here.
This only occur when I use wsl. In fact, when I run the same script in unix systems it allows me to insert the root password.
So how can I use “sudo” commands in wsl/how can I allow the user to insert the password and then pass to the system command directly it?
The double layer is apparently a problem. Could there be a way to pipe the password in somehow? That would require you to store the password in a Matlab variable, but I don't really see a way around that myself. (you can use the input function if you don't want to store the password in plain text in your m file)

请先登录,再进行评论。

回答(1 个)

It seems to work now by taking as input from the user his password and then using
system(wsl echo <password> | wsl sudo -S <command>)

类别

帮助中心File Exchange 中查找有关 Startup and Shutdown 的更多信息

产品

版本

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by