/ / Uniksowe polecenia w Matlabie - ŚCIEŻKA nieprawda? - macos, bash, matlab

Polecenia Unix za pośrednictwem Matlab - PATH nie tak? - macos, bash, matlab

Zainstalowałem serię plików binarnych, które pojawiają się w usr / local / bin na moim MACOSX (nazywane są DCMTK). The usr/local/bin folder pojawia się na ścieżce zgodnie z oczekiwaniami:

PATH=/Users/jim/Library/Enthought/Canopy_64bit/User/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin:niftyreg_install/bin

Mogę uruchamiać te polecenia zgodnie z oczekiwaniami z dowolnego folderu w oknie terminala, jednak nie mogę uruchomić żadnego z nich w Matlabie (2014b) za pomocą polecenia:

cmd=["dcmdump -h"];
system(cmd)
/bin/bash: dcmdump: command not found

Uruchomienie „env” w terminalu pokazuje, że używam tego samego SHELL co Matlab:

SHELL=/bin/bash

Moje pytanie brzmi: dlaczego tak się dzieje, gdy Matlab przywołuje bin/bash nie znajduje plików binarnych usr/local/bin? Czy w pliku .bash_profile jest coś, co muszę zaktualizować?

Dzięki,

Jim

Odpowiedzi:

1 dla odpowiedzi № 1

Jak zauważył już Mark Setchell w swoich komentarzach, możesz użyć echa zmiennej PATH z poziomu MATLAB

cmd=["echo $PATH"];
system(cmd);

Możesz także uzyskać zmienne środowiskowe, takie jak $PATH za pomocą MATLAB getenv funkcjonować:

getenv("PATH");

Jak pisałeś również w komentarzach, w twoim przypadku /usr/bin/local brakuje w $PATH zmienna. MATLAB ma opcję ustawiania zmiennych środowiskowych za pomocą setenv funkcjonować. Ale uważaj: ustawia zmienną na tylko określona wartość. Aby dołączyć folder, musisz wysłać zapytanie do istniejącej zmiennej i dołączyć do niej folder:

setenv("PATH", [getenv("PATH"),":","/usr/bin/local"]);

Jako separator ; (dla systemów Windows) lub : (dla systemów opartych na Uniksie) jest używany. W powyższym przykładzie dodałem : podczas pracy z systemem Mac OS X.