Por que meu comando mac terminal não funciona em um script de shell?

1

Eu instalei uma versão linux do fico xpress, que usa o mosel como seu executável binário. Eu posso chamar mosel de qualquer diretório e executar um modelo .mos (junto com a passagem de argumentos) da seguinte forma:

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

que termina com o código de saída 0.

No entanto, quando eu coloco o mesmo texto acima em um arquivo run.sh e:

sh run.sh

Eu recebo:

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'"

Eu procurei pelo arquivo dylib, e ele não existe (tanto quanto eu posso dizer). EDIT: eu encontrei o arquivo dylib em /usr/local/opt/xpress/lib também de nota, a fim de executar mosel a partir da linha de comando eu também tinha que definir o seguinte em /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

Por que estou recebendo este erro de um script de shell, mas não da execução da mesma linha no terminal?

    
por Nick Laws 05.01.2017 / 23:37

1 resposta

1

Em seu script, tente exportar a variável de ambiente DYLD_LIBRARY_PATH com o caminho dylib :

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

Isso deve permitir que o executável mosel saiba onde a biblioteca dinâmica está localizada.

    
por 07.01.2017 / 00:12

Tags