考虑以下代码:
#!/usr/bin/perl
use strict;
use warnings;
$value="export PI = 3.14";
open(IN,">>/root/.bashrc");
print IN $value;
close(IN);
`source /root/.bashrc`;
我想使用 Perl 脚本创建一个 env 变量。
我已经为根文件夹以及 .bashrc 文件授予了 777 权限。
脚本中的 $value 被附加到 .bashrc 但是当我使用“env”或“printenv”来显示 env 变量时,我看不到附加到 .bashrc 的那个。我猜源命令不起作用,因为当我从 CL 中获取 .bashrc 文件时,它会显示在 env 列表中。请帮助我或建议另一种方式。提前致谢。
最佳答案
反引号启动将执行源的子shell进程。然后子shell会退出并且您的perl脚本不会受到影响。你试过 $ENV{PI}=3.14; 吗?这将改变正在运行的 perl 脚本和所有随后创建的子进程的环境。
use strict ;
use warnings ;
$ENV{TEST} = 'Yo.' ;
my $subshelled = qx!echo \$TEST! ;
chomp $subshelled ;
printf "Subshelled result: '%s'\n" , $subshelled ;
my $subshellenv = qx!env! ;
printf "Env:\n%s\n" , $subshellenv ;
将打印
Subshelled result: 'Yo.'
Env:
...
TEST=Yo.
关于perl - 在 Perl 脚本中使用时,source 命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45365597/