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 № 1Jak 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.