【问题标题】:Why doesn't the ENV file get sourced by bash or sh?为什么 ENV 文件不由 bash 或 sh 获取?
【发布时间】:2022-11-30 22:33:19
【问题描述】:

我正在使用 Zsh。这是ENV 文件:

和我的.bash_profile

,每个都有一个用于调试的 echo 命令。当我启动一个新的 shell 进程sh时,

它作为子 shell 运行,并且没有调试输出。如果我换成bash

我得到相同的结果,仍然没有调试输出。

我从 this 进行了调查,了解到如果我想获取 .bash_profile 的来源,那么应该运行 bash登录模式。

接下来,我将登录时启动的 shell 更改为 sh

chsh -s /bin/sh

并打开一个新的终端选项卡,仍然没有任何回应:

当然,如果我使用bash登录

chsh -s /bin/bash

, ~/.bash_profile 将获得来源

ENV 变量按预期设置和导出。但是,为什么 ENV 文件(即 ~/.bashenv)不是由 bashsh 获取的?

【问题讨论】:

    标签: shell


    【解决方案1】:

    我在阅读时学到了一些可以解释我的问题的东西:

    对于 Bash 用户,仅当使用名称 sh、使用 --posix 命令行选项或在执行 set –o posix 后(所有这些都强制符合 POSIX 标准)调用 Bash 时,ENV 文件才被读取。

    由于变量ENV 已导出到子 shell,sh 将尝试获取 ENV 文件,因为这次我使用名称 sh

    所以,这里是解决这个问题的关键点:

    1. 我们应该使用名称sh 来调用bash

    2. ENV 变量应首先设置和访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 2015-12-23
      • 2012-11-28
      • 1970-01-01
      • 2023-01-14
      • 2021-08-21
      • 2019-11-03
      相关资源
      最近更新 更多