为什么 .bashrc 文件中定义的别名不能按预期工作?

为什么 .bashrc 文件中定义的别名不能按预期工作?

我在 .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(别名历史)肯定可以工作,因为它是内置的。

相关内容