运行 带有 JSCH 的 KornShell 脚本

Running KornShell Script with JSCH

当我尝试通过 JSCH 运行 一个 shell 脚本时,它在尝试调用 "sqlplus" 时给我一个错误。它将 运行 shell 命令和一切都很好,但是当脚本尝试使用 sqlplus 时,它停止并且无法工作。 JSCH 有什么原因吗?

脚本将 运行 直到它调用 sqlplus 命令。它给出的唯一错误是:

sqlplus: 未找到

加上发生的行号。这是 JSCH 无法在脚本中执行 运行 命令的原因吗?或者我是否遗漏了一些我需要通过频道设置的内容?

编辑:进一步测试,它实际上什至不能在脚本之外 运行 sqlplus。

您使用 JSCH 登录的用户在其路径中没有 sqlplus,因此 shell 无法找到二进制文件。

这不是 Korn Shell 问题,而是环境问题。您必须 运行 sqlplus 通过指定它在磁盘上的完整路径,例如 /path/to/sqlplus <arguments> 或将 sqlplus 添加到您登录的用户的环境变量 $PATH

如果您的脚本应该是可移植的,那么通常的做法是不对二进制路径进行硬编码,而是 运行 通过一系列测试来查看二进制文件的位置,检查所有常见位置二进制文件以及查看它是否在路径上。找到后,将该绝对路径设置为某个变量,然后在需要时使用该变量 运行 脚本中的二进制文件。