問題現象
用SSH工具連接主機,手動執行程序,正常。
通過平臺WEB網頁方式連接主機,執行程序,報錯,找不到Oracle庫文件。
測試中發現讀取到的環境變量少了很多。
分析
經過查詢資料,是因爲程序採用了non interactive + non login shell的方式。
hint:工具手動SSH登錄是interactive + login shell方式。
所以無法讀取到全局配置:/etc/profile
詳細的原理:交互方式/登錄shell,參考其他資料吧。
這裏借一張圖說明幾種方式的不同:
解決辦法
最簡單的解決辦法就是把需要讀取環境變量放入用戶的~/.bashrc中。
小問題:由於平臺不知道應用的程序會讀取哪些環境變量,所以需要用戶自己把/etc/profile中已知需要用到的環境變量都在~/.bashrc中再寫一次……
似乎需要別的解決方案啊,呵呵呵……