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実行可能ファイルが動的ライブラリがどこにあるかを知ることができます。

関連情報