当我尝试通过JSCH运行Shell脚本时,在尝试调用“ sqlplus”时出现错误。它将运行shell命令,并且一切正常,但是当脚本尝试使用sqlplus时,它将停止并且无法工作。使用JSCH是否有某些原因?
该脚本将一直运行,直到调用sqlplus命令为止。它给出的唯一错误是:
sqlplus:找不到
,其中包含发生的行号。 JSCH不能在脚本中运行命令吗?还是我错过了需要为频道设置的内容?
编辑:进一步测试,它实际上甚至不能在脚本之外运行sqlplus。
答案 0 :(得分:0)
您使用JSCH登录的用户的路径中没有sqlplus,因此shell无法找到二进制文件。
这不是Korn Shell问题,而是环境问题。您必须通过指定磁盘上的完整路径来运行sqlplus,例如/path/to/sqlplus <arguments>
,或者将sqlplus添加到您以其身份登录的用户的环境变量$PATH
中。
如果您的脚本应该是可移植的,那么通常的做法是不对二进制路径进行硬编码,而是通过一系列测试来查看二进制文件的位置,检查二进制文件的所有常见位置并查看如果在路上。找到后,将该绝对路径设置为某个变量,然后在需要在脚本中运行该二进制文件时使用该变量。