我有一个 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/