为什么非交互式Bash shell中的别名不起作用

问题描述 投票:47回答:4

我正在尝试在非交互式bash shell中使用别名。我在~/.bashrc中定义了别名,并设置了变量BASH_ENV=~/startUpFile。 startUpFile的内容为source ~/.bashrc

我执行alias命令时,可以看到别名被识别。但是,如果我尝试使用在~/.bashrc中定义的别名,则Bash无法识别它。它给了我未知的命令错误。

使用TCSH shell,这样做很容易,因为总是读取~/.cshrc文件。

关于如何使用Bash shell做到这一点的任何想法?

bash alias non-interactive shopt
4个回答
48
投票

命令shopt -s expand_aliases将允许在非交互式shell中扩展别名。


15
投票

[.bashrc仅由交互式shell处理。

此外,除非外壳程序不是交互式的,否则别名不会扩展,除非使用expand_aliases设置了shopt Shell选项。当然,除非通过调用名称为sh而不是bash的Shell来调用POSIX模式。

经常使用别名的人经常在其配置文件的末尾提供其.bashrc,因此即使对于非交互式shell,别名也存在。这可能不是最好的方法,但是很普遍。

像这样的事情使我相信,在21世纪,我们应该放弃shell脚本,而转而使用像Python这样的成熟语言。这是可以预测的。


9
投票

您必须


3
投票

我有类似的问题,最后,我发现〜/ .bashrc是我所需要的。

© www.soinside.com 2019 - 2024. All rights reserved.