≡ Menu

Bash Shell Temporarily Disable an Alias

I‘ve couple of shell aliases defined in ~/.bashrc file. How do I temporarily remove (disable) a shell alias and call the core command directly without using unalias command under a bash shell on a Linux or Unix-like systems?

An alias command enables a replacement of a word with another string. It is mainly used for abbreviating a system command, or for adding default arguments to a regularly used command. It is also useful for creating your own commands on a Linux, OS X, FreeBSD, OpenBSD, Ubuntu/Debian/Red hat/CentOS/Fedora and Unix-like operating systems.

Display currently defined aliases

Type the following command:
$ alias
Sample outputs:

alias cp='cp -i'
alias dnstop='dnstop -l 5  eth1'
alias grep='grep --color'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias update='yum update'
alias updatey='yum -y update'
alias vi='vim'
alias vnstat='vnstat -i eth1'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
alias vnstat='vnstat -i eth1'

Creating an alias

Create an alias called c for the commonly used clear command, which clear the screen:
$ alias c='clear'
Then, to clear the screen, instead of typing clear, the user would only have to type the letter c and press the [ENTER] key:
$ c

How do I disabled alias temporarily?

An alias can be disabled temporarily and the core command get called directly. Just prefix command with a backslash. Create an alias called vnstat:
$ alias vnstat='vnstat -i eth1'
$ vnstat

Sample output:

Database updated: Fri Mar 13 15:30:01 2009


	   received:     158.48 GB (20.9%)
	transmitted:     599.82 GB (79.1%)
	      total:     758.30 GB

	                rx     |     tx     |  total
	yesterday      2.83 GB |   10.90 GB |   13.73 GB
	    today      1.92 GB |    7.31 GB |    9.23 GB
	estimated      2.97 GB |   11.28 GB |   14.25 GB

Now disabled vnstat alias temporarily, enter:
$ \vnstat
Sample output:

                     rx      /     tx      /    total    /  estimated
     yesterday      2.83 GB  /   10.90 GB  /   13.73 GB
         today      1.92 GB  /    7.31 GB  /    9.23 GB  /   14.24 GB

     yesterday    655.05 MB  /    2.02 GB  /    2.66 GB
         today    438.01 MB  /    1.43 GB  /    1.86 GB  /    2.86 GB

Another option is to type full command path:
$ /usr/bin/vnstat

But, how do I unalias permanently?

Update your shell configuration file like ~/.bashrc and remove required alias:
$ vi ~/.bashrc
$ unalias nameHere
$ unalias vnstat
$ source ~/.bashrc

Share this tutorial on:

Like this? Follow us on Twitter OR support us by using Patreon

{ 21 comments… add one }
  • techfun March 13, 2009, 8:55 pm

    When you said:
    alias p='clear'
    I think you meant:
    alias c='clear'

  • nixCraft March 13, 2009, 9:04 pm

    Thanks for the heads up.

  • techfun March 13, 2009, 9:09 pm

    No problem, I do that kind of thing all the time myself. :)

  • Tim March 14, 2009, 10:48 am

    You can also use `command’. If you have ls aliased to `ls -lh’, command ls will run the ls command as if there was no alias.

  • Topper March 14, 2009, 11:24 am

    Also, you can see all the aliases from .bashrc or .bashcompletition or something else with
    # alias TAB
    This will list all the aliases

  • Michael Wagner March 14, 2009, 3:03 pm

    You can temporarily disable it via


    or with the full pathname of the command.


  • Michael Wagner March 14, 2009, 3:04 pm

    Sorry, the output was not correct. You can put an \ before the alias.

  • Michael Wagner March 14, 2009, 3:06 pm

    Sorry, the output was not correct. You can disable it when you put a \ before the alias.


  • Topper March 14, 2009, 7:43 pm

    Exactly – this was the meaning of author’s post! Did you read it ?

  • Michael Wagner March 14, 2009, 8:50 pm

    Yes I read the post but I thought it was a question not a statement. Sorry for the misunderstanding.

  • Aditya March 15, 2009, 6:42 am

    How about unaliasing?
    say I’ve a few aliases defined in my ~/.bashrc and ls is one of them:
    alias ls=’ls -alhF’

    so on prompt to disable it temporarily I will say:

    > unalias ls

    and done……how about this solution?

  • Topper March 15, 2009, 8:45 am

    unalias [-a] [name …]
    Remove each name from the list of defined aliases
    I think that will be removed permanently.

    • Jeremy February 16, 2012, 2:14 pm

      yes and no. IT does remove it permanently, however, the alias is normally generated from the .bashrc or some other file that is read in during login or opening a new terminal. So technically it is not removed permanently unless the alias commands are removed from those files as well.

    • VoidFox June 24, 2015, 12:53 pm

      thanks just what i needed :>

  • Rory Browne March 16, 2009, 12:11 pm

    There seem to be some useful tips here – I usually do something like /bin/rm to avoid the rm -i alias. Of course you can always use the -f argument with cancels out -i.

    Another thing you could do ( if you wanted to use an unedited version of the command ) would be to start up a sub-shell.

    Something along the lines of……

    unalias ls

    When you exit back out to the parent shell, your unalias is forgotten.

  • Kristian April 14, 2009, 4:24 pm

    Doesn’t control-L clear the screen?

    • nixCraft April 14, 2009, 5:54 pm

      This is not about clearing screen. It is about disabling aliases.

  • Topper April 14, 2009, 5:46 pm

    Yes it is ?

  • Jeremy February 16, 2012, 2:10 pm

    Although -f cancels out the -i for rm, it does not for cp. I found this page looking for a way to temporarily disable an alias because the -f isn’t working. The script will run, but the new file is not copying over the old one. During testing, I notice its because the -f I put on the command is not actually canceling out the alias which uses the -i and its still prompting for confirmation to move the file over.

    • nixCraft February 16, 2012, 2:31 pm

      Use full path or \ syntax:

      # skip it
      /bin/cp -f foo bar
      # OR
      \cp -f foo bar
  • Harper December 20, 2016, 3:41 pm

    Can you add in the “Why this works” part? I get why an `unalias command` would make it run in an unaliased way but why does `\` make it run unaliased? What is it about BASH that accepts the `\command` shortcut?

Security: Are you a robot or human?

Leave a Comment

You can use these HTML tags and attributes: <strong> <em> <pre> <code> <a href="" title="">

   Tagged with: ,