23

I have give alias names in .bashrc file like below. But the alias names are not working. why?

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:.
Paul
  • 59,223
  • 18
  • 147
  • 168
Venkatesh
  • 331
  • 1
  • 2
  • 3
  • 2
    Are you saying you get the environement variables but not the aliases, or you get none of it? – Paul Jun 27 '12 at 04:54
  • 1
    May be a separate issue, but you wipe out your PATH. You should reference your old PATH in any setting, e.g. `export PATH=$PATH:$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:.` `export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib` – Rich Homolka Jun 27 '12 at 15:38
  • Have you tried restarting the shell session? – Mau Jun 18 '20 at 06:41

9 Answers9

39

Did you source your .bashrc file after you changed it? Try:

. ~/.bashrc

Then your shell should see the changes. Alternatively, you can terminate and restart your shell.

p.s.

When you run from a script, load this first ref

shopt -s expand_aliases
Nam G VU
  • 12,146
  • 60
  • 135
  • 209
Fran
  • 5,313
  • 24
  • 27
  • 3
    This solved my problem! Before that, I even tried to log out and in again through the SSH, but nothing happened. The alias was still not available. Looks like I have to do this every time I do the SSH! Do you know why is this happening? – Vladimir Despotovic Oct 19 '17 at 17:05
  • I don't recommend re-running `.bashrc`. It can cause some duplicate and swollen values. Why not exit and start a new shell? It will load the updated `.bashrc` file. – AlikElzin-kilaka Jul 10 '18 at 06:34
  • @AlikElzin-kilaka, thats what Vladimir tried but it was not working. – Black Mar 18 '21 at 10:18
5

Just in case any MacOS users come looking for this answer, I tried this on my MacBook and even restarting the Terminal would not load the new alias definitions. The only way I could get it to work was to source ~/.bashrc every time. I then tried moving my alias definitions to ~/.bash_profile and this is what did the trick.

Mig82
  • 191
  • 2
  • 6
3

Maybe you are trying to define your aliases in your .bashrc that are already global.

Usually your aliases in .bashrc are defined before the /etc/bashrc call. Try to define them after.

Here an example of your .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:.
2

This may happen because your PATH has not been set correctly to use all alias referenced binaries' absoulte path. i.e ls exists under /bin/ls.

Can you give a try using

export PATH=$PATH:$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:.

or somthing like

export PATH=$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:/bin:/sbin/:/usr/sbin

If not, then use which to find the path directory for individual alias ref binaries (which history).

Worthwelle
  • 4,538
  • 11
  • 21
  • 32
1

I had a bunch of stuff in my ~/.zshrc and it was unclear which was overwriting ls as ls -G. Putting alias ls='exa' at the very bottom helped.

1

Questions to ask yourself are:

  • Is the ~/.bashrc already executed in your shell. It only runs when the shell is started. If you open a new shell (execute bash) it should be. With alias you should see all your aliases printed.
  • Second thing to ask: are the programs in your aliases available. At least h (alias history) should definitely work, because it is builtin.
Fra Orolo
  • 11
  • 1
0

Change the user's shell from /bin/sh to /bin/bash. This is all that needs to be done to make the .bashrc aliases and such work.

Worthwelle
  • 4,538
  • 11
  • 21
  • 32
0

I'm embarrassed to type this but the reason aliases weren't working for me is because I had a space in between:

alias c = 'clear'

With alias c='clear' it works.

kohane15
  • 109
  • 3
0

(Note : deal with ~/.bashrc or ~/.zshrc according to the shell u use )

  1. make sure first what shell do use the command below will let u know :

    $ echo "$SHELL"

  2. why do ypu have to know ..? because editing the ~/.bashrc while u use zsh and even resourcing or logging out will give no benefit since u configure a file for shell ur not currently using and that was the case with me

commands :

if u use zsh ~> nano /.zshrc if u use bash ~> nano /.bashrc and so on ..