Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

bashrc not loading until run bash command

Tags:

linux

bash

I am running freshly installed Arch Linux. When I log into a user (running bash) and try to use an alias from .bashrc, it gives me the 'command not found' error. But, if I reenter bash via the 'bash' command, the command works just fine.

Yes, I am already in bash.

env initially:

SHELL=/usr/bin/bash 

env after running bash, it remains:

SHELL=/usr/bin/bash 

So I'm not quite sure where the problem is.

like image 273
mauzy_broadway Avatar asked Aug 23 '13 02:08

mauzy_broadway


People also ask

Why I need to run source bashrc every time?

One of the main reasons to use source is to refresh the current shell environment by running the bashrc file. As a reminder, . bashrc is a script file executed whenever you launch an interactive shell instance. It is defined on a per-user basis and it is located in your home directory.

How do I set bash as default shell?

Hold the Ctrl key, click your user account's name in the left pane, and select “Advanced Options.” Click the “Login Shell” dropdown box and select “/bin/bash” to use Bash as your default shell or “/bin/zsh” to use Zsh as your default shell. Click “OK” to save your changes.


2 Answers

Read the INVOCATION section from "bash(1)" for full details (that's the man page for bash; use man bash). Your first shell upon logging in is a "login shell", which means that the .bashrc file is not sourced. Your second invocation creates an interactive shell, where .bashrc is sourced.

If you always want the content of your .bashrc file processed, you can add the following lines to your .bash_profile file, creating that file if it does not already exist:

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

Per its man page, bash "[...] 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." Conventions and policies of your local system will determine which, if any, of these files already exist.

A word of caution: be aware that creating a new .bash_profile in your home directory could have the unintended side-effect of preventing the reading and executing of commands in a .bash_login or .profile file already present, changing further the behavior of subsequent logins.

like image 109
sjnarv Avatar answered Sep 23 '22 05:09

sjnarv


Have you looked at your ~/.profile, ~/.bash_login and ~/.bash_profile files?

like image 38
Paul Evans Avatar answered Sep 24 '22 05:09

Paul Evans