perl - 如何在 Perl 脚本中导出 shell 变量?

标签 perl unix shell environment-variables

我有一个 shell 脚本,其中包含一个 shell 变量列表,它在进入编程环境之前执行。

我想用一个Perl脚本进入编程环境:

system("environment_defaults.sh");
system("obe");

但是当我进入环境时,变量没有设置。

最佳答案

当您调用第二个命令时,它不是在您在第一个命令中修改的环境中完成的。实际上,第一个命令没有留下任何环境,因为用于调用“environment_defaults.sh”的shell已经退出。

要将第一个命令的上下文保留在第二个命令中,请在同一个 shell 中调用它们:

system("source environment_defaults.sh && obe");

请注意,您需要使用 source 调用 shell 脚本。为了在当前 shell 中执行它的操作,而不是调用一个新的 shell 来执行它们。

或者,在每个 shell 的开头修改您的环境(例如,使用 .bash_profile,如果使用 bash),或者在 perl 本身中更改您的环境变量:
$ENV{FOO} = "hello";
system('echo $FOO');

关于perl - 如何在 Perl 脚本中导出 shell 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2967762/

相关文章:

perl - 当 Perl 中发生不好的事情时,是 croak() 还是 die() 更好?

python - Python 与 Perl 中的小写脚本

csv - 读取CSV解析数据并存储在Hash中

unix - 在 unix 上构建 m4、autoconf、automake、libtool

linux - 移动文件到不同的目录

regex - unix 中正则表达式的语法错误

linux - 我可以在 bash 中为多个并行后台进程使用相同的变量名吗?

amazon-web-services - 使用 aws cli 过滤导出的数据 cloudFormation

android - 通过 adb shell service callisms Android 4.1.2 发送短信

perl - 解析具有重复键的缩进文本