How to create ~/.bash_profile and ~/.profile
You can use the touch
command.
For instance,
cd ~
to go to the home directory.
Now we will create a file called .bash_profile
(the dot means that it will be hidden).
Then use nano
or vi
in the Terminal. Unless you know what vi
is, just use nano
. To open up these files, you would use:
sudo nano .bash_profile
sudo
makes sure that you will be able to save these files. Here, you can add aliases
. nano
or vi
will automatically create a new file if it does not exist in your current directory in Terminal.
After you are finished, press Ctrl + O, Enter, and Ctrl + X to save and quit. Finally, use
source ~/.bash_profile
to reload the Terminal and it will read what you put in those files.
Of course, you can alias that too if you want. :)
To answer your final question, these files will automatically be read every time you open the Terminal. However, if there is an error (For instance, don't put spaces between aliases), it will tell you.
More Information
As George pointed out, .bash_profile
will run only on login shells. For non-login shells, you would need to create a .bashrc
file with:
sudo nano .bashrc
Links
.bash_profile vs .bashrc
Importance of .bashrc
You can copy those files from /etc/skel/ which are skeleton files for new users created by command like useradd on Debian based distros:
cp -nr /etc/skel/. ~/
These files will be automatically loaded by shell every time you log in. Way of loading those profile files is described in your shell manual page. In case you use bash shell in special way (e.g., via ssh, ansible, etc...) you should use 'bash -ilc command' if you want execute command in bash shell with ENV prepared by those profile files
- -i means interactive shell what is often required by .bashrc
- -l means login shell which causes .profile to be loaded (or .bash_profile if exists - see manual page of bash) which then loads .bashrc (if interactive)