Linux
為什麼我的 mac 終端命令在 shell 腳本中不起作用?
我已經安裝了一個 linux 版本的 fico xpress,它使用 mosel 作為其二進制執行檔。我可以從任何目錄呼叫 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 文件,但它不存在(據我所知)。編輯:我在另外值得注意的地方找到了 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
為什麼我從 shell 腳本中得到這個錯誤,而不是在終端中執行同一行?
在您的腳本中嘗試使用路徑導出
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 執行檔知道動態庫的位置。