【问题标题】:Commands available in bash -i can't access in bash -lbash -i 中可用的命令无法在 bash -l 中访问
【发布时间】:2012-03-31 18:58:58
【问题描述】:

我不知道怎么形容。它只是在我使用 vim 和 set shell=bash -l 时发生。然后我发现一个叫做mm的命令可以在终端中执行,而不能在vim中执行。

而且我还发现,当我在run.sh 中编写此命令并执行此脚本时。它仍然报告command not found。我认为我的$HOME/.bash* 文件和$HOME/.profile 一定有问题。我确信.profile.bashrc 几乎相同。

【问题讨论】:

    标签: linux bash shell vim terminal


    【解决方案1】:

    来自$ man bash

    当 bash 作为交互式登录 shell 或作为 带有 --login 选项的非交互式 shell,它首先读取 如果该文件存在,则从文件 /etc/profile 执行命令。 读取该文件后,它会查找 ~/.bash_profile, ~/.bash_login 和 ~/.profile,按此顺序,读取和 从第一个存在且可读的命令开始执行。

    当一个不是登录 shell 的交互式 shell 启动时,bash 如果该文件存在,则从 ~/.bashrc 读取并执行命令。

    所以:

    shell   | files loaded    
    --------+-----------------
    bash -l | /etc/profile    
            | ~/.bash_profile 
            | ~/.bash_login
            | ~/.profile     
    --------+-----------------
    bash -i | ~/.bashrc
    

    【讨论】:

    • 但请注意, bash -l 将在加载第一个用户配置文件后停止。习惯上设置.bash_profile 依次加载.bashrc.profile,但除非以这种方式明确配置,否则不会发生这种情况。
    • 是的,我已将相关部分加粗。
    猜你喜欢
    • 2012-03-29
    • 1970-01-01
    • 2020-10-15
    • 2016-11-04
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    相关资源
    最近更新 更多