为什么 bash 命令中缺少别名?

Rad*_*anu 2 command-line bash alias

当我在终端中运行时:

alias
Run Code Online (Sandbox Code Playgroud)

我的所有别名(在~/bashrc~/.bash_aliases文件中定义)的列表将显示在我的终端上。这很好,正如预期的那样!

但是当我运行时:

bash -c "alias"
Run Code Online (Sandbox Code Playgroud)

没有输出,所以没有别名。首先,我认为该~/.bashrc文件不是第二种情况下的来源,所以我跑了:

bash -c ". ~/.bashrc && alias"
Run Code Online (Sandbox Code Playgroud)

但是,昏迷,再次没有输出......

奇怪的是,当我运行时:

bash -c ". ~/.bash_aliases && alias"
Run Code Online (Sandbox Code Playgroud)

~/.bash_aliases显示定义的别名。

有人可以让我了解一下这里到底发生了什么吗?

Cyr*_*rus 5

您需要一个用于别名定义的交互式 shell:

bash -i -c "alias"
Run Code Online (Sandbox Code Playgroud)