setenv fails to change environment variables on Linux

16 次查看(过去 30 天)
Hi,
I'm using Matlab on Ubuntu 16.04, and it seems that Matlab cannot run system calls:, because of an apparently failure of the Matlab command setenv to change the environment variables in the shell running below my Matlab session. To clarify what I mean, I copy and paste from my current session in Matlab:
>> ls /usr/local/bin/chimera
/usr/local/bin/chimera
This file /usr/local/bin/chimera is an executable that I would like to run from matlab without needing to pass the full path (i.e., as !chimera or system('chimera');). To make it visible to my Matlab session, I prepend it to the environment variable PATH of the linux shell through the matlab commands getenv and setenv
>> setenv('PATH',['/usr/local/bin/:',getenv('PATH')]);
However, the Linux shell cannot find the executable "chimera" when asked by Matlab:
>> !which chimera
>>
In fact, looks like the PATH variable was never changed from the point of view of the Linux Shell
>> !echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.
although Matlab finds the correct value through getenv:
>> getenv('PATH')
ans =
:/usr/local/bin/chimera:/usr/local/bsse/MATLAB_R2018a/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin:'
In any case, this does not help me, as my Matlab session is unable to run system calls properly:
>> unix('chimera');
/bin/bash: chimera: command not found
>> system('chimera');
/bin/bash: chimera: command not found
So, what can be the reason that setenv is not working properly?
thanks in advance,
Daniel
matlab version: (R2018a)

回答(1 个)

Jesse Hopkins
Jesse Hopkins 2019-10-15
Hello, I recently came across this same issue. While I wasn't able to directly solve it, I was able to workaround by setting up the PATH variable appropriately in my account's .cshrc file located in the account home directory, adding a line like
setenv PATH /my/new/path:${PATH}
That worked for future logins to my account. To refresh your current session, execute from your home directory:
source .cshrc

类别

Help CenterFile Exchange 中查找有关 System Commands 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by