【发布时间】:2015-01-03 20:48:32
【问题描述】:
我需要通过 perl 脚本将配置文件 'eg.conf' 提供给终端。我正在使用系统命令,但它不起作用。
system('. /etc/eg.conf')
基本上我正在编写脚本,稍后它将使用环境变量(在 conf 文件下)执行其他进程。
【问题讨论】:
我需要通过 perl 脚本将配置文件 'eg.conf' 提供给终端。我正在使用系统命令,但它不起作用。
system('. /etc/eg.conf')
基本上我正在编写脚本,稍后它将使用环境变量(在 conf 文件下)执行其他进程。
【问题讨论】:
目前尚不清楚您要实现什么,但如果您想在 Perl 中提供配置并且您的配置文件是有效的 Perl 代码,您可以使用 do 或 require(有关更多信息,请参阅 perldoc )。
您在代码中所做的是使用system 生成一个shell,在此shell 中包含配置(必须采用shell 语法),然后再次退出shell,这当然会在关闭时丢弃所有配置.我猜这不是你打算做的,但你的真正意图并不清楚。
【讨论】:
你的目标是什么?您是否需要获取 eg.conf 以从 perl 控制的 shell 中设置进一步的计算,或者您是否试图影响正在运行 perl 脚本的父 shell?
您对system('. /etc/eg.conf') 的示例调用创建了一个新的shell 子进程。 /etc/eg.conf 来自该 shell,此时 shell 退出。在 perl 脚本和生成 perl 脚本的父进程中没有任何变化。
没有父进程[1]的帮助,不能从子进程修改父进程的环境。通常将父 shell 的代码返回到 source 或 eval。
1:好的,理论上可以通过直接插入父进程的内存空间来影响父进程。不要那样做。
【讨论】: