为什么.bashrc文件中定义的别名不起作用?


12

我在.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:.

2
您是说得到环境变量,但没有别名,还是什么都没有?
保罗

1
可能是一个单独的问题,但是您要清除PATH。您应在任何设置下引用您的旧路径,例如export PATH=$PATH:$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
Rich Homolka 2012年

Answers:


29

.bashrc更改文件后,您是否已获取源文件?尝试:

. ~/.bashrc

然后,您的外壳应会看到更改。或者,您可以终止并重新启动Shell。

ps

从脚本运行时,请加载此第一个参考

shopt -s expand_aliases

2
这解决了我的问题!在此之前,我什至尝试通过SSH再次注销和登录,但是没有任何反应。别名仍然不可用。看起来我每次执行SSH都必须这样做!你知道为什么会这样吗?
弗拉基米尔·德斯波托维奇

我不建议重新运行.bashrc。这可能会导致某些重复值膨胀。为什么不退出并启动新的Shell?它将加载更新的.bashrc文件。
AlikElzin-kilaka

2

发生这种情况的原因是您的PATH尚未正确设置为使用所有别名引用的二进制绝对路径。即ls存在于/ bin / ls下。

您可以使用“ export PATH = $ PATH:$ ORACLE_HOME / bin:/ usr / vac / bin:/ usr / vacpp / bin:”进行尝试。或类似“ export PATH = $ ORACLE_HOME / bin:/ usr / vac / bin:/ usr / vacpp / bin:/ bin:/ sbin /:/ usr / sbin之类的东西

如果不是,则使用“哪个”来查找各个别名引用二进制文件的路径目录(哪个历史记录)。


1

要问自己的问题是:

  • 〜/ .bashrc是否已在您的Shell中执行。它仅在启动外壳程序时运行。如果您打开一个新的外壳程序(执行bash),它应该是。随即显示alias所有别名。
  • 第二件事要问:别名中的程序是否可用。至少h(别名历史记录)肯定是有效的,因为它是内置的。

1

也许您正在尝试在.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:.

很棒的答案!我一直在AWS Linux AMI中看到这种情况
rainabba

1

万一任何MacOS用户都在寻找这个答案,我在MacBook上尝试了这个方法,即使重新启动终端也不会加载新的别名定义。我source ~/.bashrc每次都能使用它的唯一方法。然后,我尝试将别名定义移到其中~/.bash_profile就是窍门。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.