问题现象
用SSH工具连接主机,手动执行程序,正常。
通过平台WEB网页方式连接主机,执行程序,报错,找不到Oracle库文件。
测试中发现读取到的环境变量少了很多。
分析
经过查询资料,是因为程序采用了non interactive + non login shell的方式。
hint:工具手动SSH登录是interactive + login shell方式。
所以无法读取到全局配置:/etc/profile
详细的原理:交互方式/登录shell,参考其他资料吧。
这里借一张图说明几种方式的不同:
解决办法
最简单的解决办法就是把需要读取环境变量放入用户的~/.bashrc中。
小问题:由于平台不知道应用的程序会读取哪些环境变量,所以需要用户自己把/etc/profile中已知需要用到的环境变量都在~/.bashrc中再写一次……
似乎需要别的解决方案啊,呵呵呵……