首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >perl Shell::GetEnv

perl Shell::GetEnv
EN

Stack Overflow用户
提问于 2011-10-19 15:48:28
回答 1查看 887关注 0票数 0

我想用perl脚本编写源文件,首先,我使用以下方法:

代码语言:javascript
复制
system("source env.bash");

但是我得到了一个错误,比如:

无法执行"source":s-test.pl第10行没有这样的文件或目录。

我不能解决这个问题,所以我使用Shell::GetEnv

代码语言:javascript
复制
use Shell::GetEnv;

$env = Shell::GetEnv->new('bash', 'source env.bash' );

$envs = $env->envs(%opt);
$env->import_envs(%opt);

但是它似乎根本不起作用,有谁能帮我解决它吗?非常感谢。

EN

回答 1

Stack Overflow用户

发布于 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的价值的函数。你确定你需要它吗?也许你只想这样做:

代码语言:javascript
复制
...
$envs = $env->envs();
$env->import_envs();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7818115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档