【问题标题】:How to nicely manipulate environment variables via bash scripts?如何通过 bash 脚本很好地操作环境变量?
【发布时间】:2019-01-23 10:54:09
【问题描述】:

我想在我的 shell 中添加一些辅助命令。我想添加几个命令,它们需要在它们之间共享一些信息。但是,由于我希望每个 shell 具有不同的状态,因此我不能使用文件来存储共享信息,而必须使用环境变量。

这带来了设置环境变量的问题:要在我的 shell 而不仅仅是在子进程中更改变量,我需要将我的命令放在脚本中并始终获取脚本,或者将它们定义为函数并获取通过.bashrc 提交文件。

我还定义了一些辅助函数,这些函数被我的几个命令使用,我不希望它们包含在我的主 shell 进程的范围内。

我对 bash 有点缺乏经验,所以我的问题是: 实现这一点的最干净的方法是什么?我应该将命令放入脚本还是函数中?我可以防止我的辅助功能被引入主 shell 吗?有没有更简单的方法来操作环境变量?

【问题讨论】:

  • 作为一个想法,您可以也将它们存储在名称中包含 shell PID 的文件中。在不了解您的用例的情况下,不要说它是好是坏。
  • 您得到的答案很糟糕,因为您的问题措辞不当。您“对 bash 缺乏经验”似乎是您的问题中最少的一个。您是否了解环境变量是由子进程继承的,但这些进程不能不修改其父进程的环境变量?
  • @KurtisRader 是的,我明白,这是我的问题的一部分。但主要问题是我正在尝试做一些 bash 不应该做的事情,我认为。

标签: bash shell environment-variables


【解决方案1】:

您可以将环境变量存储在 shell 文件 (myEnv.sh) 中。那么你可以使用

source myEnv.sh 

根据需要加载环境变量。

您也可以将其注入到您的主 shell 脚本中

【讨论】:

    【解决方案2】:

    我建议您使用 .profile 文件而不是 .sh 文件。 case1.profile , case2.profile 并在需要时获取它们。 使用以下任何一种方法来获取文件。

    来源 ~/.case1.profile

    。 ~/.case1.profile

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 2011-07-23
      • 2016-10-07
      相关资源
      最近更新 更多