在Perl脚本中更改shell

时间:2012-05-16 23:54:23

标签: perl shell unix

我正在寻找一种很好的方法来完成以下工作:

所以我有一个脚本,我需要在Unix中通过调用Perl脚本在Python中运行,而Perl脚本又是在Windows中使用Plink从我的Excel VBA宏调用的。由于依赖性问题,Python脚本必须在csh或bash中运行,我需要在运行脚本之前使用export / setenv添加一些库。但是默认情况下,perl在sh shell中运行,因此,我无法添加所有依赖项并运行Python脚本。

所以,我只是想知道是否有更多:1。我可以在perl脚本中为sh shell添加依赖项,或者2.强制我的perl脚本在csh中运行(首选,因为某些原因。帐户的bashrc会遇到权限问题。)

非常感谢!

3 个答案:

答案 0 :(得分:2)

如何“3.在Perl或Python脚本中设置适当的环境变量”?

$ENV{'PATH'} = ...

...

os.environ['PATH'] = os.pathsep.join(newpaths + os.environ['PATH'].split(os.pathsep))

(不知道如何在Perl中获取路径分隔符,sorz)

答案 1 :(得分:1)

要强制shell csh,请在Perl中尝试以下内容:

`/bin/csh -c "command_name"`;

修改

你可以像这样使用ENV变量。试试这个:

$s = `/bin/bash -c 'VAR_FOO=753; echo \$VAR_FOO'`;
print $s;

答案 2 :(得分:0)

我最后只是更改了.cshrc脚本,显然由于某些原因,PATH的添加对我来说不起作用。在那之后,通过将所有内容放在一行中,一切都顺利进行

所以基本上它看起来像这样

/path/to/.cshrc && /python/path/to/python

希望有所帮助!