我需要通过perl脚本将配置文件'eg.conf'
发送到终端。我正在使用系统命令,但它无法正常工作。
system('. /etc/eg.conf'
)
基本上我正在编写脚本,稍后它将使用环境变量(在conf文件下)执行其他进程。
答案 0 :(得分:0)
目前尚不清楚您要实现的目标,但如果您想在Perl中提供配置并且您的配置文件是有效的Perl代码,则可以使用do
或require
(请参阅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:好的,理论上可以通过直接戳入其内存空间来影响父进程。别这么做。