终端中的源配置文件通过perl脚本

时间:2014-11-07 05:42:52

标签: perl shell terminal

我需要通过perl脚本将配置文件'eg.conf'发送到终端。我正在使用系统命令,但它无法正常工作。 system('. /etc/eg.conf'

基本上我正在编写脚本,稍后它将使用环境变量(在conf文件下)执行其他进程。

2 个答案:

答案 0 :(得分:0)

目前尚不清楚您要实现的目标,但如果您想在Perl中提供配置并且您的配置文件是有效的Perl代码,则可以使用dorequire(请参阅perldoc获取更多信息)。

你在代码中做的是用system生成一个shell,在这个shell中包含配置(必须是shell语法),然后再次退出shell,这当然会抛弃所有的配置在关闭。我想这不是你打算做的,但你的真实意图并不清楚。

答案 1 :(得分:0)

你的目标是什么?您是否需要从perl受控shell中获取eg.conf来设置进一步的计算,或者您是否试图影响运行perl脚本的父shell?

您对system('. /etc/eg.conf')的示例调用会创建一个新的shell子进程。 /etc/eg.conf源自该shell,此时shell将退出。在perl脚本中或在生成perl脚本的父进程中没有任何更改。

在没有父进程[1]的帮助下,无法从子进程修改父进程的环境。通常会将父shell的代码返回source或to eval。

1:好的,理论上可以通过直接戳入其内存空间来影响父进程。别这么做。