
Question:
I am completely new to UNIX, so pardon me if this question is incredibly stupid.
I just started an internship, where I'm given access to a build server. I want to include certain aliases by default in my environment when I log in. From what I understand, the way to do it would be to include them in a .bashrc file in my $HOME directory. But it doesn't seem to work. I read somewhere that only interactive shells and user scripts would be able to read it, is that the reason it doesn't work? I'm running Bash. So how would I go about doing this?
Thanks in advance!
Solution:1
iman453, the files need to be named .bashrc and .bash_profile. The period before the file means it is hidden. Any idea what version of Unix or Linux the build server is running?
In my home directory I have
. |-- .bash_history |-- .bash_logout |-- .bash_profile |-- .bashrc |-- .mozilla | |-- extensions | `-- plugins |-- .ssh | |-- .config | |-- authorized_keys | |-- authorized_keys2 | `-- known_hosts |-- .viminfo |-- .vimrc
The contents of my .bashrc file are:
# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # User specific aliases and functions alias chknag='sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg' alias ducks='sudo du -cksh * | sort -n | head -50'
The contents of .bash_profile:
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin:/usr/sbin:/usr/bin:/sbin export PATH
When I SSH into this machine after I authenticate I have access to the alias ducks.
Solution:2
In your ${HOME}/.bash_profile
, add the following:
# source the users bashrc if it exists if [ -e "${HOME}/.bashrc" ] ; then source "${HOME}/.bashrc" fi
Solution:3
From man bash
:
When bash is invoked as an interactive login shell, or as a non-interâ active shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable.
and
When an interactive shell that is not a login shell is started, bash reads and executes commands from /etc/bash.bashrc and ~/.bashrc, if these files exist.
If, for example, you're logging in through a graphical user interface and then starting a terminal which is running Bash, then you're in an "interactive shell that is not a login shell".
Solution:4
You have to call .bashrc from your bash_profile. Refer here for Execution sequence for interactive login shell.
Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
EmoticonEmoticon