我正在尝试在非交互式 bash shell 中使用别名。我在 ~/.bashrc 中定义了别名,并设置了变量 BASH_ENV=~/startUpFile。startUpFile 的内容是源 ~/....
我正在尝试在非交互式 bash shell 中使用别名。我已在 中定义了别名, ~/.bashrc
并设置了变量 BASH_ENV=~/startUpFile
。startUpFile 的内容是 source ~/.bashrc
.
当我执行命令时,我可以看到我的别名被识别 alias
。但是,如果我尝试使用 中定义的别名 ~/.bashrc
,Bash 无法识别它。它给了我未知命令错误。
使用 TCSH shell 可以很容易地做到这一点,因为该 ~/.cshrc
文件始终被读取。
有什么想法我可以用 Bash shell 来做到这一点吗?
.bashrc
仅由交互式 shell 处理。
此外,当 shell 不是交互式时,别名不会展开,除非 expand_aliases
使用 设置 shell 选项 shopt
。当然,除非通过使用名称 sh
而不是 bash
.
经常使用别名的人通常会 .bashrc
在配置文件末尾添加别名,这样即使是非交互式 shell 也能找到别名。这可能不是最好的方法,但很常见。
正是这样的情况让我相信,在 21 世纪,我们应该放弃 shell 脚本,转而采用 Python 这样的成熟语言。它更容易预测。