我在 .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:.
Run Code Online (Sandbox Code Playgroud)
Fra*_*ran 33
.bashrc您更改文件后是否有源文件?尝试:
. ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
然后你的 shell 应该会看到这些变化。或者,您可以终止并重新启动 shell。
ps
当你从脚本运行时,加载这个第一个引用
shopt -s expand_aliases
Run Code Online (Sandbox Code Playgroud)
小智 5
以防万一任何MacOS用户来寻找这个答案,我在我的 MacBook 上尝试了这个,甚至重新启动终端也不会加载新的别名定义。我能让它发挥作用的唯一方法就是source ~/.bashrc每次都这样做。然后我尝试将别名定义移至~/.bash_profile,这就是成功的原因。
小智 2
发生这种情况可能是因为您的 PATH 尚未正确设置为使用所有别名引用的二进制文件的绝对路径。即ls存在于/bin/ls.
你可以尝试使用
export PATH=$PATH:$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:.
Run Code Online (Sandbox Code Playgroud)
或者类似的东西
export PATH=$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:/bin:/sbin/:/usr/sbin
Run Code Online (Sandbox Code Playgroud)
如果没有,则使用which查找各个别名引用二进制文件的路径目录(历史记录)。