I have defined three aliases in my .bash_profile
but my bash shell is not reading it. The aliases defined are not working in my terminal and I couldn't resolve this issue.
alias handybook="cd /Users/rsukla/development/repos/handybook/"
This line is defined inside the .bash_profile
but it is not working in my shell.
Things I have tried so far:
I have created .bashrc
file and defined the alias but it is also not working.
if I used source ~rsukla/.bash_profile
then the alias are working fine but I want the alias permanently so I don't have to use source
every time I open my shell
Any idea why the hell the alias
are not working in when I define in .bash_profile
?
Assuming:
bash
is indeed your shell (as is the default on OS X)then ~/.bash_profile
should be loaded for every interactive shell, because both terminal programs create login shells by default.
Bash login shells source ~/.bash_profile
, but not ~/.bashrc
.
Note that this differs from most Linux distros, where a single login shell is executed on startup, and later interactive shells are non-login shells, which only load ~/.bashrc
, not ~/.bash_profile
.
A frequently seen technique to ensure that definitions are loaded in both login and non-login interactive shells is to place definitions in ~/.bashrc
, and then source it from ~/.bash_profile
, using the following line:[[ -f ~/.bashrc ]] && . ~/.bashrc
You can create a login shell on demand by executing bash -l
from an existing shell; if that loads your aliases, then the problem must be with what your default shell is and/or how your terminal program is configured.
echo $SHELL
tells you what your default shell is.Terminal > Preferences...
, tab General
, setting Shells open with
tells you whether the default shell or a custom shell is being used.We still don't know why aliases are not loaded automatically.
Your aliases should be loaded from the .bash_profile
. This is the default behaviour of bash in OS X.
mklement0 wrote more about the problem in their answer in this thread.
Open the Preferences of the Terminal. You specify the command you start your shell with:
Instead of manually sourcing your dotfiles every time you can specify which file you want to source when the shell opens. Here is the list of options for bash
:
Usage: bash [GNU long option] [option] ...
bash [GNU long option] [option] script-file ...
GNU long options:
--debug
--debugger
--dump-po-strings
--dump-strings
--help
--init-file
--login
--noediting
--noprofile
--norc
--posix
--protected
--rcfile
--restricted
--verbose
--version
--wordexp
Shell options:
-irsD or -c command or -O shopt_option (invocation only)
-abefhkmnptuvxBCHP or -o option
You might consider using /bin/bash --rcfile alias_file_of_yours
or something similar.
goat
if you need aliases using the cd
command.As a side note I do recommend you to check out goat. It lets you manage such cd
aliases easily.
I use it and I wrote it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With