开发者

Why my perl script requires to export packages path into @INC to run remotely via ssh

The server perl script - with its required packages - works locally by the user "my_user".

But if I run the script remotely (ssh), I need to export PERL5LIB=/usr/lo开发者_如何转开发cal/share/perl/5.10.0/my_modules before calling the perl script to get it working.

Why this and how can I turn around this in order to avoid exporting PERLIB each time I need to call a remote perl script ?

WORKING :

ssh my_user@remote_server "export PERL5LIB=/usr/local/share/perl/5.10.0/my_modules; /cgi-bin/my_perl_script.pl --option1 foo --option2 '*';"  

NOT WORKING :

ssh my_user@remote_server "/cgi-bin/my_perl_script.pl --option1 foo --option2 '*';"  

returns : Can't locate my_package1.pm in @INC

That might be rather an ssh question than a strict perl point : why the remote user running the perl script does not inherit from its ENV local datas.

Thx


As suggested by @mu_is_too_short (no friction is good as well), and linking to a more detailed explanation here, there are different types of shells : "the SSH command execution shell is a non-interactive shell, whereas your normal shell is either a login shell or an interactive shell".

So the solution is what I did on purpose (eg adding "export PERL5LIB" before running the script), or better, source the whole environement from the remote user to run the remote shell with the expected behavior.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜