linux - 在 Perl 脚本中使用 Linux 环境变量作为路径

标签 linux perl environment-variables

我正在尝试使用一个环境变量来指向一个文件,通过一个子例程运行它并将它与一个变量相关联。我用 Windows 管理它,但我无法获得适用于 Linux 的语法。

这是我的:

 my $config = read_config("$ENV{APP_HOME}/config/APP-linux.cfg");

我的脚本在到达这一行时死机并出现错误:

    Use of uninitialized value $ENV{"APP_HOME"} in concatenation (.) or string at ./XXXXX.pl

APP_HOME 被定义为环境变量(使用 set 确认)。我做错了什么?

最佳答案

在 bash 中,= 只是创建一个 shell 变量。这些不会自动导出到环境中。您需要明确地这样做。

设置一个shell变量:

 $ AA=hello

设置并导出另一个(在一条语句中):

 $ export BB=there

开始一个新进程:

 $ bash

瞧!只有导出的变量被新进程继承:

 $ echo "[$AA] [$BB]"
 [] [there]

注意 set 设置变量。 set AA=hello 不执行 Windows shell 执行的操作。

关于linux - 在 Perl 脚本中使用 Linux 环境变量作为路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24065637/

相关文章:

linux - 如何正确地将 unix top 命令输出保存到变量中?

linux - 如何/在哪里找到要修复的 Linux 内核错误?

c# - 奇怪的正则表达式行为 - 只匹配第一个和最后一个捕获组

java - netbeans环境变量

windows - 确定操作系统类型的环境变量(Windows XP、Windows 7)

linux - linaro-hwpack-create面临的问题

java - 如何从 Java 程序执行 Perl 脚本?

regex - perl 正则表达式,删除捕获的内容

c# - 使用 CreateProcessAsUser 和 CreateEnvironmentBlock 创建进程后未设置 Clientname

linux - 从远程主机检索 MD5