我想用perl脚本编写源文件,首先,我使用以下方法:
system("source env.bash");但是我得到了一个错误,比如:
无法执行"source":s-test.pl第10行没有这样的文件或目录。
我不能解决这个问题,所以我使用Shell::GetEnv
use Shell::GetEnv;
$env = Shell::GetEnv->new('bash', 'source env.bash' );
$envs = $env->envs(%opt);
$env->import_envs(%opt);但是它似乎根本不起作用,有谁能帮我解决它吗?非常感谢。
发布于 2011-10-19 16:09:31
system() (至少在类Unix系统上)通过/bin/sh调用命名命令。与bash不同,/bin/sh没有将source作为.的同义词。
但即使您将其更改为system(". env.bash"),它也不会起作用。假设env.bash设置了环境变量(export FOO=BAR; ...)。此类设置仅适用于当前进程。它将调用一个shell,在该shell中设置环境变量,然后对调用(perl)进程没有任何影响。
我以前从未使用过Shell::GetEnv,但根据文档,%opt用于将选项传递给您尚未向我们展示%opt的价值的函数。你确定你需要它吗?也许你只想这样做:
...
$envs = $env->envs();
$env->import_envs();https://stackoverflow.com/questions/7818115
复制相似问题