如何覆盖Perl发起的shell中的系统命令?

时间:2013-07-24 08:55:29

标签: perl bash gnuplot

我正在尝试在没有root权限的共享Linux环境上安装CPAN模块,特别是PDL::Graphics::Gnuplot模块。默认的gnuplot版本为Version 3.7 patchlevel 3,但也安装了版本Version 4.6 patchlevel 3/opt/gnuplot-4.6.3/bin/gnuplot)。尝试在我的本地目录中安装Perl模块时,测试失败:

unless(`gnuplot -V`)

我尝试使用.bashrc中的别名覆盖默认的gnuplot命令:

alias gnuplot='/opt/gnuplot-4.6.3/bin/gnuplot'

在常规shell中我得到:

$gnuplot -V
gnuplot 4.6 patchlevel 3

但是使用Perl:

$ perl -e 'system("gnuplot -V")'
         Cannot open load file '-V'
         line 0: (No such file or directory)

如何让Perl看到新版本的gnuplot?

在解决方案上我想到的是更改Makefile和模块中以下文件中的系统命令。

1 个答案:

答案 0 :(得分:2)

Shell别名仅适用于交互式shell。您还有其他选择:

  1. 更改您的路径,以便较新的gnuplot bin位于旧路径之前。

  2. bin创建指向新gnuplot的符号链接,并确保它首先出现在PATH中。