How do I create a Bash alias?
Asked Answered
A

16

263

I'm on OSX and I need to put something like this, alias blah="/usr/bin/blah" in a config file but I don't know where the config file is.

Artless answered 23/1, 2012 at 6:15 Comment(4)
Tangentially, this particular alias is basically redundant unless you are specifically trying to override he shell's PATH resolution for this specific command. If /usr/bin is in your PATH (which really it must be) then blah will run from there just fine without this alias, too, unless there is also say /usr/local/bin/blah and /usr/local/bin is before /usr/bin in your PATH but you still want to prefer /usr/bin/blah and cannot for some reason simply remove or rename /usr/local/bin/blah.Chickweed
Even then this is a dubious, hackish solution which should come with a big fat ugly comment with a warning message telling you how this will bite your shapely lower abdomen, and another saying "I told you so" for each time this happened.Chickweed
For all the automation lovers: I personally add addAlias() { echo "alias $1='$2' " >> ~/.bash_profile to my bash_profile and then I source it and run addAlias hi 'echo "hi" ' . Source bash profile and type hi to see it.Racer
Make sure to escape characters properly alias name=" echo "string" " is wrong, but alias name=" echo \"string\" " will be fine.Solidago
U
329

You can add an alias or a function in your startup script file.

MacOS 10.13 High Sierra and earlier:

The default shell is bash. Usually the startup script file is .bashrc, .bash_login or .profile file in your home directory.

Since these files are hidden you will have to do an ls -a to list them. If you don't have one you can create one.


If I remember correctly, when I had bought my Mac, the .bash_login file wasn't there. I had to create it for myself so that I could put prompt info, alias, functions, etc. in it.

Here are the steps if you would like to create one:

  1. Start up Terminal
  2. Type cd ~/ to go to your home folder
  3. Type touch .bash_profile to create your new file.
  4. Edit .bash_profile with your favorite editor (or you can just type open -e .bash_profile to open it in TextEdit.
  5. Type . .bash_profile to reload .bash_profile and update any alias you add.
Unbridle answered 23/1, 2012 at 6:19 Comment(11)
Awesome, thanks @jaypal! Is the command source .bash_profile an alternative to step 5?Kathrynkathryne
Yes on my OSX Mavericks there was no .bash_profile in my home dir. Creating it, adding the alias to it, and then initiating it with the . .bash_profile command worked.Underplot
.bash_profile works for me! :) .bashrc didn't on El CapitanKattiekatuscha
On OSX El Capitan .bash_profile works. If it doesn’t automatically load when you open a terminal window, it is probably because it was created without executable permission. This command will fix it and it should automatically load for future sessions: chmod u+x .bash_profileRosenquist
.bash_profile profile is locked how can i update this fileKaolack
Thanks! Worked on Mac OS Sierra.Engine
To get aliases working on High Sierra, I had to add source ~/.bashrc to .bash_profile, as instructed here https://mcmap.net/q/12919/-should-aliases-go-in-bashrc-or-bash_profile-duplicateShenitashenk
Just a little comment here. You need to close entirely your terminal and reopen to make it work properly 😁👍Idyll
A little bit of additional information on the above, If you want to add your aliases in the .bashrc file, make sure you add "source .bashrc" in the .bash_profile file and reload it after adding.Tiffanytiffi
Just in case it's still not working, restarting the tab alone won't work, we have to restart the terminal - For Dumbos like me :)Luik
This no longer works, should create .zshrc fileBlackmun
C
87

I just open zshrc with sublime, and edit it.

subl .zshrc

And add this on sublime:

alias blah="/usr/bin/blah"

Run this command in terminal:

source ~/.zshrc

Done.

Companionate answered 5/5, 2016 at 14:34 Comment(1)
This is confused. If your shell is Bash, many other answers on this page are more detailed and helpful. If you use Zsh instead of Bash, then obviously you should source .zshrc at the end to load in the changes you made into your currently running shell instance.Chickweed
P
46

MacOS 10.15 Catalina and Above

Apple switched their default shell to zsh, so the config files include ~/.zshenv and ~/.zshrc. This is just like ~/.bashrc, but for zsh. Just edit the file and add what you need; it should be sourced every time you open a new terminal window:

nano ~/.zshenv alias py=python

Then do ctrl+x, y, then enter to save.

This file seems to be executed no matter what (login, non-login, or script), so seems better than the ~/.zshrc file.

MacOS 10.13 High Sierra and earlier

The default shell is bash, and you can edit the file ~/.bash_profile and add aliases:

nano ~/.bash_profile alias py=python

Then ctrl+x, y, and enter to save. See this post for more on these configs. It's a little better to set it up with your alias in ~/.bashrc, then source ~/.bashrc from ~/.bash_profile. In ~/.bash_profile it would then look like:

source ~/.bashrc

Periodic answered 23/9, 2019 at 23:9 Comment(1)
This should be higher now that Catalina is the most up to date Mac OSMcadams
D
33

On OS X you want to use ~/.bash_profile. This is because by default Terminal.app opens a login shell for each new window.

See more about the different configuration files and when they are used here: What's the difference between .bashrc, .bash_profile, and .environment?

and in relation to OSX here: About .bash_profile, .bashrc, and where should alias be written in?

Defendant answered 23/1, 2012 at 6:25 Comment(0)
D
21

In my .bashrc file the following lines were there by default:

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

Hence, in my platform .bash_aliases is the file used for aliases by default (and the one I use). I'm not an OS X user, but I guess that if you open your .bashrc file, you'll be able to identify what's the file commonly used for aliases in your platform.

Devise answered 23/1, 2012 at 7:18 Comment(2)
If the profile doesn’t automatically load when you open a terminal window, it is probably missing the executable permission. This command will fix it and it should automatically load for future sessions: chmod u+x .bash_profileRosenquist
@Rosenquist No, the file just needs to be readable in order for Bash to read it as its configuration file. Making it executable is technically harmless but unnecessary. I would discourage it on nontechnical grounds (you might end up confusing yourself and/or others).Chickweed
P
18

It works for me on macOS Mojave

You can do a few simple steps:

  1. open terminal

  2. sudo nano /.bash_profile

  3. add your aliases, as example:

    # some aliases
    alias ll='ls -alF'
    alias la='ls -A'
    alias eb="sudo nano ~/.bash_profile && source ~/.bash_profile"
    #docker aliases
    alias d='docker'
    alias dc='docker-compose'
    alias dnax="docker rm $(docker ps -aq)"
    #git aliases
    alias g='git'
    alias new="git checkout -b"
    alias last="git log -2"
    alias gg='git status'
    alias lg="git log --pretty=format:'%h was %an, %ar, message: %s' --graph"
    alias nah="git reset --hard && git clean -df"
    alias squash="git rebase -i HEAD~2"
  1. source /.bash_profile

Done. Use and enjoy!

Parrish answered 26/2, 2019 at 10:18 Comment(3)
My aliases do not work with double dashes -- in case of git. How did you get them to work? For example your alias lg has double dashes. I'm trying to set alias stash="git stash --include-untracked" but when I call it in terminal it ignores the -- command.Kasiekask
Just in case it's still not working, restarting the tab alone won't work, we have to restart the terminal - For Dumbos like me :)Luik
alias nah="git reset --hard && git clean -df" is the winner of the most intuitive naming contest!Modulate
I
13

For macOS Catalina Users:

Step 1: create or update .zshrc file

vi ~/.zshrc

Step 2: Add your alias line

alias blah="/usr/bin/blah"

Step 3: Source .zshrc

source ~/.zshrc 

Step 4: Check you're alias, by typing alias on the command prompt

alias
Intervention answered 27/6, 2020 at 3:37 Comment(0)
K
9
cd /etc
sudo vi bashrc

Add the following like:

alias ll="ls -lrt"

Finally restart Terminal.

Kohler answered 21/2, 2016 at 20:6 Comment(1)
After adding alias. Run 'source' on your '.bash_profile' file. Ex: source ~/.bash_profile (command which activates/ reloads the bash aliases)Messenia
V
7

The config file for scripts and programs is ~/.bashrc and the config file that gets loaded when you use Terminal is ~/.bash_login.

I think the best way is to just have everything in ~/.bashrc.

For your specific question just enter (this will overwrite any existing ~/.bashrc):

echo "alias blah=\"/usr/bin/blah\"" >>~/.bashrc

into the Terminal and a ~/.bashrc file will be created with your new alises. After that just edit the file to add new aliases, functions, settings etc.

Vercingetorix answered 23/1, 2012 at 15:22 Comment(1)
Shouldn't you use >> instead of > so that it appends to the file rather than replacing everything in it?Hyperventilation
Z
6
  1. Go to home
  2. Open .bashrc
  3. Create alias at bottom of the file

    alias alias_name='command to do'
    eg: alias cdDesktop='cd /Desktop'
    
  4. Save the file

  5. source .bashrc

    source ~/.bashrc
    
  6. Open terminal (Ctrl+Alt+T) & type cdDesktop & press enter

Zygo answered 5/1, 2018 at 5:35 Comment(0)
I
4

If you put blah="/usr/bin/blah" in your ~/.bashrc then you can use $blah in your login shell as a substitute for typing /usr/bin/blah

Ingvar answered 23/1, 2012 at 6:18 Comment(1)
The dollar sign is emphatically not in any way necessary, useful, or correct here.Chickweed
C
3

You probably want to edit the .bashrc file in your home directory.

Cannabis answered 23/1, 2012 at 6:19 Comment(0)
V
2

I need to run the Postgres database and created an alias for the purpose. The work through is provided below:

$ nano ~/.bash_profile 

# in the bash_profile, insert the following texts:

alias pgst="pg_ctl -D /usr/local/var/postgres start"
alias pgsp="pg_ctl -D /usr/local/var/postgres stop"


$ source ~/.bash_profile 

### This will start the Postgres server 
$ pgst

### This will stop the Postgres server 
$ pgsp
Vassili answered 2/11, 2020 at 6:19 Comment(0)
L
1

I think it's proper way:

1) Go to teminal. open ~/.bashrc. Add if not exists

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

2) open ~/.bash_aliases. If not exists: touch ~/.bash_aliases && open ~/.bash_aliases

3) To add new alias rather
- edit .bash_aliases file and restart terminal or print source ~/.bash_aliases
- print echo "alias clr='clear'" >> ~/.bash_aliases && source ~/.bash_aliases where your alias is alias clr='clear'.

4) Add line source ~/.bash_aliases to ~/.bash_profile file. It needs to load aliases in each init of terminal.

Ladykiller answered 29/4, 2019 at 9:31 Comment(0)
P
1

create a bash_profile at your user root - ex

/user/username/.bash_profile

open file

vim ~/.bash_profile

add alias as ex. (save and exit)

alias mydir="cd ~/Documents/dirname/anotherdir"

in new terminal just type mydir - it should open

/user/username/Documents/dirname/anotherdir
Prolongation answered 5/6, 2019 at 16:23 Comment(0)
Y
0

To create a permanent alias shortcut, put it in .bash_profile file and point .bashrc file to .bash_profile file. Follow these steps (I am creating an alias command called bnode to run babel transpiler on ES6 code):

  1. Go to terminal command prompt and type “cd” (this will take you to the home directory. Note: even though your programming files may be located on your “D: drive”, your “.bash” files may be located on your “C: drive” )
  2. To see the location of the home directory, type “pwd” (this will show you the home directory path and where the .bash files are probably located)
  3. To see all dot "." files in the home directory, type “ls -la” (this will show ALL files including hidden dot "." files)
  4. You will see 2 files: “.bash_profile” and “.bashrc”
  5. Open .bashrc file in VS Code Editor or your IDE and enter “source ~/.bash_profile” in first line (to point .bashrc file to .bash_profile)
  6. Open .bash_profile file in VS Code Editor and enter “alias bnode='./node_modules/.bin/babel-node'” (to create permanent bnode shortcut to execute as bash command)
  7. Save and close both files
  8. Now open the file you want to execute (index.js) and open in terminal command prompt and run file by using command “bnode index.js”
  9. Now your index.js file will execute but before creating bnode alias in .bash_profile file you would get the error "bash: bnode command not found" and it would not recognize and give errors on some ES6 code.
  10. Helpful link to learn about dotfiles: https://dotfiles.github.io/

I hope this helps! Good luck!

Yeorgi answered 9/7, 2018 at 21:37 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.