我遇到了以下问题:我目前使用 Windows 10 计算机上的 PuTTY 连接到我们的一台 Linux 服务器。如果我使用“标准”PuTTY 连接,则不会出现任何问题:我可以登录并运行 Perl 脚本来访问 Linux 服务器上的 Oracle 数据库。但是,最近我设置了一个新的 PuTTY 连接(我复制了上面使用的原始工作副本)。与原始连接的唯一区别在于,我在 PuTTY 配置窗口的“连接->SSH->远程命令”部分中输入了以下内容:
cd ../home/code/project1/scripts/perl ; /bin/bash
(我已经这样做了,因此我可以直接到达包含所有脚本的文件夹。)
我仍然可以毫无问题地登录服务器,它直接将我带到包含我的 Perl 脚本的文件夹。但是,当我运行脚本访问 Oracle 数据库时,我收到以下错误:
DBI connect('server1/dbname','username',...) failed: ERROR OCIEnvNlsCreate. Check ORACLE_HOME (Linux) env var or PATH (Windows) and or NLS settings, permissions, etc. at PerlDBFile1.pl line 10.
impossible de se connecter à server1 / dbname at PerlDBFile1.pl line 10, <DATA> line 1.
此外,如果我在服务器上运行“env”命令,则不会列出变量$ORACLE_HOME(如果我使用标准PuTTY连接在服务器上运行相同的“env”命令,则会出现$ORACLE_HOME变量。)
只需注意:通过我创建的任一 PuTTY 会话在服务器上运行任何其他 Perl 脚本(不访问 Oracle 数据库)都可以正常工作。
答案1
好的,我找到解决方案了!...感谢所有回复的人。
基本上,我最初有这个命令:
cd ../home/code/project1/scripts/perl ; /bin/bash (See original post)
为了让它工作,我用上面的替换了
cd ../home/code/project1/scripts/perl; source ~/.bash_profile; /bin/bash
我也尝试过:
cd ../home/code/project1/scripts/perl; /bin/bash; source ~/.bash_profile
但那没有用。