Perl 脚本,如何从 .bash_profile 获取环境变量

Nic*_*eld 2 linux variables profile environment perl

我需要一些关于 perl 脚本的快速建议。我创建了一个脚本,它基本上调用了其他 perl 脚本和其中的许多其他 shell 脚本。我面临的问题只是试图通过设置一个环境变量来使其在通用级别上运行。

顺便说一下,这是在 linux RHEL/CentOS 上...

所以我将我的变量添加到 .bash_profile 并且如果我首先手动获取文件,然后运行我的 perl 脚本,它可以正常工作!这是,好的,但我希望脚本自动化这部分,而不是需要额外的手动采购步骤。

所以我的脚本看起来像这样......简而言之

#!/usr/bin/perl
use warnings;
use strict;

`/bin/bash ~/.bash_profile`;

blah blah blah more code etc;
Run Code Online (Sandbox Code Playgroud)

启动主脚本(这部分代码所在的位置)时,它没有问题。这是对其他脚本的所有后续调用都失败了……就好像它没有将变量传递给其他脚本一样。

有任何想法吗??

谢谢,

Ste*_*ich 6

  • 最简单的方法是在 perl 中设置环境变量$ENV{"name"}=...。然后这些变量将自动传播到从 perl 脚本中启动的任何程序,无论是 perl 脚本还是 shell 脚本
  • 或者,您可以打开 .bash_profile,在 perl 中解析它,提取变量,然后在 perl 中使用$ENV. 这很容易出错,因为可能有多种方法来声明变量。
  • 或者你可以生成一个 shell,它读取 .bash_profile 并在env之后调用。然后你读取并解析这个 shell 的输出。这与之前的提议类似,但你必须解析的输出定义更明确。
  • 或者你可以使用一个 shell 脚本来获取 .bash_profile 然后生成 perl 脚本。