我想在一个非交互式bash shell中使用别名。 我在我的定义别名~/.bashrc
,我已经设置变量BASH_ENV=~/startUpFile
。 所述startUpFile的内容source ~/.bashrc
。
我可以看到我的别名被识别,当我执行的alias
命令。 但是,如果我尝试使用定义的别名~/.bashrc
,Bash可以不承认它。 它给我未知命令错误。
随着tcsh外壳这是很容易做到这一点,因为在~/.cshrc
的文件总是被读出。
任何想法如何,我可以用Bash shell中做到这一点?
该命令shopt -s expand_aliases
将允许非交互shell别名扩展。
.bashrc
仅交互shell处理。
此外,别名不是当shell不是交互,除非扩大, expand_aliases
外壳选择是使用设置shopt
。 除非,当然,POSIX模式是通过调用名为外壳调用sh
代替bash
。
谁使用别名很多人经常采购他们.bashrc
在他们的个人资料的结束,这样的别名甚至有非交互shell。 这可能不是最好的方式,但它是很常见的。
它是像这样的事情,导致我相信,在21世纪,我们应该支持像Python一个完全成熟的语言,放弃shell脚本。 这是一个很多更容易预测。
我有类似的问题,到最后,我发现,在〜/ .bashrc是我所需要的。
然而,在Ubuntu,我不得不评论说,停止处理该行的〜/ .bashrc:
If not running interactively, don't do anything
[ -z "$PS1" ] && return