如何将环境设置导入我的Perl程序?

Sao*_*obi 4 linux environment perl

我有一个脚本,其内容只是在linux中导出一个变量.

export LD_LIBRARY_PATH=....
Run Code Online (Sandbox Code Playgroud)

我想在我的Perl脚本中运行此脚本,因此无论谁运行我的Perl脚本都将拥有它们的LD_LIBRARY_PATH集合.我可以在Perl脚本的开头执行此操作:

#!/usr/bin/perl -w

system(". /myfolder1/myfolder2/myScript.sh");
Run Code Online (Sandbox Code Playgroud)

eph*_*ent 10

#!/bin/sh
. /myfolder1/myfolder2/myScript.sh
exec perl -wxS "$0" "$@"
#!/usr/bin/perl -w
# .. the rest of your script as normal
Run Code Online (Sandbox Code Playgroud)

当你运行它时,它将首先被执行/bin/sh,它能够加载myScript.sh到本地环境中. sh然后exec是Perl,被告知从下一行继续.

  • `-w`:全局警告,因为你在原始脚本中有这个警告.`-x`:查找`#!perl`行并从那里开始执行.`-S "$ 0" "$ @"`:查看一下`$ PATH`为`$ 0`(当前脚本),并沿所有其它参数传递. (4认同)

mob*_*mob 5

这不行.要更改Perl脚本中的环境(并更改将传递给从Perl脚本内部运行的命令的环境),请更改%ENV变量.

$ENV{"LD_LIBRARY_PATH"} = ... ;
Run Code Online (Sandbox Code Playgroud)