>/root/.bashr-6ren">
gpt4 book ai didi

perl - 在 Perl 脚本中使用时,source 命令不起作用

转载 作者:行者123 更新时间:2023-12-05 00:57:05 26 4
gpt4 key购买 nike

考虑以下代码:

#!/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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com