我正在尝试使用环境变量指向文件,通过子例程运行它并将其与变量相关联。我使用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确认)。我做错了什么?
答案 0 :(得分:1)
在bash中,=
只是创建一个shell变量。这些不会自动导出到环境中。你需要明确地做到这一点。
设置shell变量:
$ AA=hello
设置并导出另一个(在单个语句中):
$ export BB=there
开始新流程:
$ bash
瞧!新进程只继承导出的变量:
$ echo "[$AA] [$BB]"
[] [there]
注意 set
不设置变量。 set AA=hello
不能执行Windows shell所做的事情。
答案 1 :(得分:0)
好的,解决方案是我自己的愚蠢。我使用:
在.bashrc中设置变量APP_HOME=$HOME/APP/DATA/STORAGE; export FINE_DIR
RAPID_DIR无权在那里。是剩下的复制/粘贴和糟糕的疏忽......将FINE_DIR更改为APP_HOME,一切都很好。
谢谢你的所有指导!