Mac 터미널 명령이 쉘 스크립트에서 작동하지 않는 이유는 무엇입니까?

Mac 터미널 명령이 쉘 스크립트에서 작동하지 않는 이유는 무엇입니까?

mosel을 바이너리 실행 파일로 사용하는 Linux 버전의 fico xpress를 설치했습니다. 다음과 같이 임의의 디렉터리에서 mosel을 호출하고 매개변수 전달과 함께 .mos 모델을 실행할 수 있습니다.

mosel -c "exec PATH/TO/MODEL arg1='value1', arg2='value2'"

종료 코드 0으로 끝났습니다.

그러나 위와 동일한 텍스트를 run.sh 파일에 넣고 다음을 수행합니다.

sh run.sh

나는 얻다:

dyld: Library not loaded: libxprm_mc.dylib
Referenced from: /usr/local/opt/xpress/bin/mosel
Reason: image not found
run.sh: line 4: 22768 Trace/BPT trap: 5       mosel -c "exec PATH/TO/MODEL arg1='value1', arg2='value2'"

dylib 파일을 검색했지만 (내가 아는 한) 존재하지 않습니다. 편집: /usr/local/opt/xpress/lib 명령줄에서 mosel을 실행하려면 다음 항목도 설정해야 했습니다 /etc/launchd.conf.

setenv XPRESSDIR /usr/local/opt/xpress
setenv PATH $XPRESSDIR/bin:$PATH
setenv LD_LIBRARY_PATH $XPRESSDIR/lib:$LD_LIBRARY_PATH
setenv CLASSPATH $XPRESSDIR/lib/xprs.jar:$CLASSPATH 
setenv CLASSPATH $XPRESSDIR/lib/xprb.jar:$CLASSPATH 
setenv CLASSPATH $XPRESSDIR/lib/xprm.jar:$XLASSPATH 
setenv XPRESS $XPRESSDIR/bin

터미널에서 동일한 줄을 실행할 때가 아닌 쉘 스크립트에서 이 오류가 발생하는 이유는 무엇입니까?

답변1

스크립트에서 다음 경로를 사용하여 DYLD_LIBRARY_PATH환경 변수를 내보내 보세요 dylib.

export DYLD_LIBRARY_PATH=/usr/local/opt/xpress/bin/lib:${DYLD_LIBRARY_PATH}
mosel -c "exec PATH/TO/MODEL arg1='value1', arg2='value2'"

이렇게 하면 mosel 실행 파일이 동적 라이브러리가 어디에 있는지 알 수 있습니다.

관련 정보