![为什么 .bashrc 文件中定义的别名不能按预期工作?](https://linux22.com/image/1320154/%E4%B8%BA%E4%BB%80%E4%B9%88%20.bashrc%20%E6%96%87%E4%BB%B6%E4%B8%AD%E5%AE%9A%E4%B9%89%E7%9A%84%E5%88%AB%E5%90%8D%E4%B8%8D%E8%83%BD%E6%8C%89%E9%A2%84%E6%9C%9F%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
我在 .bashrc 文件中指定了别名,如下所示。但别名不起作用。为什么?
alias c='clear'
alias l='ls -lt'
alias h='history'
alias d='ls -lt |grep "^d"'
export ORACLE_HOME=/ora11gr2/app/oracle/product/11.2.0/db2
export ORACLE_LIB=/ora11gr2/app/oracle/product/11.2.0/db2/lib
export PATH=$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:.
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:.
答案1
.bashrc
更改文件后,您是否获取了文件?尝试:
. ~/.bashrc
然后你的 shell 应该会看到更改。或者,你可以终止并重新启动 shell。
附言
从脚本运行时,首先加载參考
shopt -s expand_aliases
答案2
为了防止任何 macOS 用户来寻找这个答案,我在我的 MacBook 上尝试过这个,即使重新启动终端也无法加载新的别名定义。
source ~/.bashrc
我每次都能让它工作的唯一方法就是。
然后我尝试将别名定义移动~/.bash_profile
到这就是这个诀窍。
答案3
也许您正在尝试定义.bashrc
已经是全局的别名。
通常你的别名.bashrc
是在调用之前定义的/etc/bashrc
。尝试定义它们 后。
下面是一个示例.bashrc
:
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
alias c='clear'
alias l='ls -lt'
alias h='history'
alias d='ls -lt |grep "^d"'
export ORACLE_HOME=/ora11gr2/app/oracle/product/11.2.0/db2
export ORACLE_LIB=/ora11gr2/app/oracle/product/11.2.0/db2/lib
export PATH=$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:.
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:.
答案4
您需要问自己的问题是:
- ~/.bashrc 是否已在您的 shell 中执行。它仅在 shell 启动时运行。如果您打开一个新 shell(执行
bash
),它应该会运行。alias
您应该会看到所有别名都被打印出来。 - 第二件要问的事情是:你的别名中的程序是否可用。至少 h(别名历史)肯定可以工作,因为它是内置的。